溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用代理ip防止爬蟲被封ip(附億牛云代理開發(fā)過程)

發(fā)布時(shí)間:2020-08-08 12:55:41 來源:ITPUB博客 閱讀:247 作者:mmz_77 欄目:編程語言


在我們使用爬蟲的過程中,很容易遇到反爬機(jī)制是禁用 ip 的,可以使用代理 ip 解決 ip 被封的問題。但是網(wǎng)上 ip 代理有很多家,到底選哪家好呢?

本文選擇億牛云代理 ( 官網(wǎng)地址 www.16yun.cn) 進(jìn)行演示,使用 php 語言,如果需要大規(guī)模抓取可以去試試 python 。

 

在官網(wǎng)我們可以看到有提供兩種方式進(jìn)行代理,一種是 api 模式,一種是隧道模式。 Api 模式就是我們爬蟲最常用到的,就是提供 url 連接給你,你的程序自動(dòng)的獲取代理信息。這個(gè)模式適合自己需要管理 ip 池控制 ip 的使用, ip 的有效時(shí)間是 2 10 分鐘;隧道模式就提供給你一個(gè)固定的服務(wù)器 ip 地址信息,包括 ip :端口:用戶名:密碼只需要將代理信息配置到程序里面就可以使用,他們后臺(tái)會(huì)自動(dòng)切換 ip ,這個(gè)模式很方便,簡(jiǎn)單。

 

1 、第一種方式

第一種方式

首先代理提供商會(huì)提供給你一個(gè) api 接口,你可以通過這個(gè)接口去獲取 ip和端口號(hào)。但是這些ip的時(shí)效是 2到10 分鐘,所以我建立了一個(gè) ip池,每?jī)煞昼娙ジ乱淮蝘p池,以確保這些ip每次用到的時(shí)候都是有效的 。

第二種方式

 

可以直接查看億牛云代理接入文檔 php代碼

<?php

         // 要訪問的目標(biāo)頁面

         $url  = "http://httpbin.org/ip" ;

         $urls  = "https://httpbin.org/ip" ;

 

         // 代理服務(wù)器

         define ( "PROXY_SERVER" , "tcp://t.16yun.cn:31111" );

 

         // 隧道身份信息

         define ( "PROXY_USER" , "16YUN123" );

         define ( "PROXY_PASS" , "123456" );

 

         $proxyAuth  = base64_encode ( PROXY_USER  . ":"  . PROXY_PASS );

 

         // 設(shè)置 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 ); ?>

經(jīng)過一周的測(cè)試,代理的有效率在 90% 以上,總體來說效果還是很好的。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI