无法使用 PHP 通过 tor 网络获取网站元描述

Can't get website meta description over tor network using PHP

亲爱的朋友们,我正在尝试做一个有趣的项目,我们可以输入一个 tor .onion 地址并找到与之相关的网站标题和元描述。所以这是我的代码,

<?php 

$ch = curl_init('http://torchdeedp3i2jigzjdmfpn5ttjhthh5wbmda2rr3jvqjg5p77c54dqd.onion');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_PROXYTYPE      => CURLPROXY_SOCKS5_HOSTNAME,
    CURLOPT_PROXY          => '127.0.0.1:9150',
    CURLOPT_HEADER         => 0,
    CURLOPT_FOLLOWLOCATION => 1,
    CURLOPT_ENCODING       => '',
    CURLOPT_COOKIEFILE     => '',
]);

$response = curl_exec($ch);

if ($response === false) {
    echo sprintf(
        "Request failed.  Error (%d) - %s\n",
        curl_errno($ch),
        curl_error($ch)
    );
    exit;
}

if (preg_match('/\<title\>(.*)\<\/title\>/i', $response, $match)) {
    echo "The title is '{$match[1]}'";
} else {
    echo "Did not find title in page.";
}

echo "<br></br><br>";

$tags = get_meta_tags($response);
echo $tags['description'];  // a php manual

 ?>

其实我正确地得到了网站的标题。但是当我要获取 .onion 网站的元描述时,我的问题出现了。这是截图enter image description here

请帮帮我。我的 php 代码有什么问题

您可以使用 DOMDocument 进行数据解析(我已经在我的服务器上测试过,它可以工作):

请替换:

$tags = get_meta_tags($response);
echo $tags['description'];  // a php manual

来自



//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($response);

$metas = $doc->getElementsByTagName('meta');

for ($i = 0; $i < $metas->length; $i++)
{
    $meta = $metas->item($i);
    if(strtolower($meta->getAttribute('name')) == 'description')
        $description = $meta->getAttribute('content');
    if(strtolower($meta->getAttribute('name')) == 'keywords')
        $keywords = $meta->getAttribute('content');
}

echo "Description: $description". '<br/><br/>';
echo "Keywords: $keywords";