有过相关爬虫经验应该都知道网站对爬虫有一定限制的,如果有违反网站规定的操作出现,网站就会定义为爬虫操作,从而将你的IP禁止,那么你就不能够用这个IP访问网站了。
在使用
python对网页进行多次快速爬取的时候,访问次数过于频繁,服务器不会考虑User-Agent的信息,会直接把你视为爬虫,从而过滤掉,拒绝你的访问,在这种时候就需要设置代理。那么,我们可以给proxies属性设置一个代理的IP地址,具体代码如下:
// 要访问的目标页面
$url = "http://httpbin.org/ip" ;
$urls = "https://httpbin.org/ip" ;
// 代理服务器
define ( "PROXY_SERVER" , "tcp://t.16yun.cn:31111" );
// 隧道身份信息
define ( "PROXY_USER" , "16YUN123" );
define ( "PROXY_PASS" , "123456" );
$proxyAuth = base64_encode ( PROXY_USER . ":" . PROXY_PASS );
// 设置 Proxy tunnel
$tunnel = rand ( 1 , 10000 );
$headers = implode ( " \r\n " , [
"Proxy-Authorization: Basic { $proxyAuth } " ,
"Proxy-Tunnel: ${ tunnel } " ,
]);
$sniServer = parse_url ( $urls , PHP_URL_HOST );
$options = [
"http" => [
"proxy" => PROXY_SERVER ,
"header" => $headers ,
"method" => "GET" ,
'request_fulluri' => true ,
],
'ssl' => array (
'SNI_enabled' => true , // Disable SNI for https over http proxies
'SNI_server_name' => $sniServer
)
];
print ( $url );
$context = stream_context_create ( $options );
$result = file_get_contents ( $url , false , $context );
var_dump ( $result );
// 访问 HTTPS 页面
print ( $urls );
$context = stream_context_create ( $options );
$result = file_get_contents ( $urls , false , $context );
var_dump ( $result ); ?>
在代码中的目标网站是检测代理是否访问成功,如果访问成功就会返回代理IP,如果代理返回异常有可能是代理的配置没有正确,那就需要对配置的代理信息进行检查。
以上就是在加入代理IP使用的设置代码,希望能够为大家带来帮助。