微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无法使用 PHP 通过 Tor 网络获取网站元描述

亲爱的朋友们,我正在尝试制作一个有趣的项目,我们可以输入一个 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";

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。