所以,我一直在寻找一个使用PHP的页面标题。我花了五秒钟的时间,找到了答案:
function get_title($url){
$str = file_get_contents($url);
if(strlen($str)>0){
$str = trim(preg_replace('/\s+/', ' ', $str));
preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title);
return $title[1];
}
}
但我需要通过Tor代理,所以5秒研究这个网站和你的智慧,我发现:
$aContext = array(
'http' => array(
'proxy' => 'proxy:port',
'request_fulluri' => true,
)
);
$cxContext = stream_context_create($aContext);
把所有的东西放在一起,我这样做了:
$aContext = array(
'http' => array(
'proxy' => '127.0.0.1:9150',
'request_fulluri' => true,
)
);
$cxContext = stream_context_create($aContext);
function get_title($url){
global $cxContext;
$str = file_get_contents($url, False, $cxContext);
if(strlen($str)>0){
$str = trim(preg_replace('/\s+/', ' ', $str));
preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title);
return $title[1];
}
}
echo get_title('http://' . $theonionurl);
但是,这是行不通的。日志显示:
PHP警告:file_get_contents(http://the_onion_address_to_check.onion):无法打开流:/www/html/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/cn/http://my_onion_address.onion/mychecker.php
我把端口改成了9050,还是不行。
我做错了什么???
(显然,我检查了,要检查的URL是有效的,可以通过tor浏览器访问)
2条答案
按热度按时间xcitsw881#
Tor是否已安装并运行在您的系统上?连接被拒绝表示该端口上没有侦听。
您首先需要安装并运行Tor,然后才能使用它连接到站点。
此外,端口9050是
SOCKS
代理,而不是HTTP代理,因此您无法将其与HTTP流代理上下文选项一起使用,因为这仅适用于HTTP代理。相反,如果你想使用Tor,你应该使用curl沿着代理选项:
6ie5vjzr2#
您的
$aContext
在函数之外。将其移动到函数内部,它应该可以工作。
我不确定这个全球性的东西。
我从来没有使用过它,我发现使用局部变量更安全。