在执行任何其他操作之前,我正在使用此代码检查代理服务器。当连接正常时,我有$host = '123.45.678.90';
$port = 80;
$waitTimeoutInSeconds = 1;
if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){
$aContext = array(
'http' => array(
'proxy' => 'tcp://123.45.678.90:80',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
// connect to website using a proxy server
$file_content = file_get_contents('https://www.anything.com', False, $cxContext);
} else {
// It didn't work
}
fclose($fp);
行连接到网站。
Cannot connect to HTTPS server through proxy
但是虽然代理连接成功,但我看到了这一点:警告 Vehicle#loadingDate
?有没有机会有一个if / else语句,如果没有警告就允许我做某事,如果有警告就停止做某事?我已经看过很多了,但是找不到任何可以尝试的东西。
感谢您的帮助!
答案 0 :(得分:0)
尝试使用curl
代替file_get_contents
,它会起作用
<?php
$url = 'https://www.google.com';
// to check your proxy
// $url = 'http://whatismyipaddress.com/';
$proxy = '50.115.194.97:8080';
// create curl resource
$ch = curl_init();
// set options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // read more about HTTPS http://stackoverflow.com/questions/31162706/how-to-scrape-a-ssl-or-https- url/31164409#31164409
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
echo $output;
?>
来自PHPhil
答案 1 :(得分:0)
if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)
没有意义,如果此代理有效,您只需使用:
$aContext = array(
'http' => array(
'proxy' => 'tcp://123.45.678.90:80',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
$file_content = file_get_contents('https://google.com', False, $cxContext);
print $file_content;