如何使用代理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);?>

相关文章
相关标签/搜索