使用代理ip防止爬虫被封ip(附亿牛云代理开发过程)


在我们使用爬虫的过程中,很容易遇到反爬机制是禁用 ip 的,可以使用代理 ip 解决 ip 被封的问题。但是网上 ip 代理有很多家,到底选哪家好呢?

本文选择亿牛云代理 ( 官网地址 www.16yun.cn) 进行演示,使用 php 语言,如果需要大规模抓取可以去试试 python

 

在官网我们可以看到有提供两种方式进行代理,一种是 api 模式,一种是隧道模式。 Api 模式就是我们爬虫最常用到的,就是提供 url 连接给你,你的程序自动的获取代理信息。这个模式适合自己需要管理 ip 池控制 ip 的使用, ip 的有效时间是 2 10 分钟;隧道模式就提供给你一个固定的服务器 ip 地址信息,包括 ip :端口:用户名:密码只需要将代理信息配置到程序里面就可以使用,他们后台会自动切换 ip ,这个模式很方便,简单。

 

1 、第一种方式

第一种方式

首先代理提供商会提供给你一个 api 接口,你可以通过这个接口去获取 ip和端口号。但是这些ip的时效是 2到10 分钟,所以我建立了一个 ip池,每两分钟去更新一次ip池,以确保这些ip每次用到的时候都是有效的

第二种方式

 

可以直接查看亿牛云代理接入文档 php代码

<?php

         // 要访问的目标页面

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

经过一周的测试,代理的有效率在 90% 以上,总体来说效果还是很好的。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31522063/viewspace-2644217/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31522063/viewspace-2644217/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值