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