如何使用代理IP進行數據抓取,PHP爬蟲抓取亞馬遜商品數據

 

什麼是代理?什麼狀況下會用到代理IP?api

代理服務器(Proxy Server),其功能就是代用戶去取得網絡信息,而後返回給用戶。形象的說:它是網絡信息的中轉站。經過代理IP訪問目標站,能夠隱藏用戶的真實IP。服務器

好比你要抓取一個網站數據,該網站有100萬條內容,他們作了IP限制,每一個IP每小時只能抓1000條,若是單個IP去抓由於受限,須要40天左右才能採集完,若是用了代理IP,不停的切換IP,就能夠突破每小時1000條的頻率限制,從而提升效率。網絡

 

其餘想切換IP或者隱藏身份的場景也會用到代理IP,好比SEO等。tcp

 

代理IP有開放代理也有私密代理,開放代理是全網掃描而來的,不穩定,不適合爬蟲,若是本身隨便用用還好。用爬蟲抓數據,最好使用私密代理。私密代理網上有不少提供商,穩定性良莠不齊,如今咱們公司使用的是「億牛雲」提供的私密代理。網站

咱們公司有個項目是抓取亞馬遜數據來進行分析銷量、評論等,用PHP進行抓取,抓取亞馬遜要特別注意header頭,不然輸出的數據就是空了。咱們以前是使用的其餘家代理的api模式的,可是本身管理ip池以爲很麻煩,因此選擇了億牛雲提供的爬蟲代理,動態轉發模式的,不須要咱們本身管理ip池,直接進行數據採集,這很方便也節約了不少時間。url

 

      

        $url = "https://www.amazon.com/dp/B01H2S9F6C";spa

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

 

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

 

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

        define("PROXY_PASS", "123456");

 

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

 

        $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);

        print($urls);

        $context = stream_context_create($options);

        $result = file_get_contents($urls, false, $context);

        var_dump($result);?>

相關文章
相關標籤/搜索