python检测代理ip可用性,python爬虫代理ip使用方法

  python检测代理ip可用性,python爬虫代理ip使用方法

  Yyds干货库存

  单一IP的局限性:相信研究爬虫的朋友或多或少都遇到过一个场景。在爬取一些网站时,因为频率、反爬取等措施,被识别为机器操作,从而限制客户端访问。通常的做法是封禁IP地址,短则5到6分钟,长则10小时。

  如果程序只是用来自学的话,屏蔽操作影响不大。但如果工作中处理实际业务的程序被IP屏蔽,可能会影响公司的整个业务,因为很多业务都依赖于爬虫拉过来的数据,比如习惯分析、客户行为分析等。如果数据源被阻塞,影响将是致命的。这时候可以引入代理IP的方法来避免类似的问题。

  计算机和代理IP在我们知道什么是代理IP之前,我们先来了解一下互联网中的每台机器是如何识别对方身份的,以便后面更好的理解代理IP的作用。

  在互联网中,通过每台电脑对应的IP地址来实现对不同电脑的识别(可以理解为和身份证一样)。一般来说,IP地址分为局域网IP地址(例如127.00.1或192.168.xx)和广域网IP地址(实际上是外部地址)。这里说的IP地址就是广域网的IP地址。

  比如我们可以在浏览器中输入:IP,此时显示的地址就是我们电脑的实际IP地址:

  识别过程当我们访问一个网站,比如百度,通过手机、电脑等设备,百度服务器可以获取我们手机或电脑的IP地址,从而得到一些相应的信息,比如IP地址所属的地区。比如现在各大平台都上线了一个用户所在地的功能,每个发言的用户背后都会携带相应的地址信息。实现原理是类似的。

  一旦代表我们手机或电脑发送的操作被网站认为是抓取,网站可以直接限制这个IP对网站的操作(通过反抓取策略)。此时,该IP地址发送的所有请求都可能被网站拦截。这时,如果程序有后续的业务逻辑,就不会执行。

  如上所述,IP地址就像我们的身份证一样,可以识别电脑的身份。一旦IP地址被限制,我们将无法在网站上执行其他操作。这时候我们可以通过代理IP来解决这个问题。

  代理IP:可以理解为中间平台。我们的程序首先将请求发送到代理IP,然后代理IP将我们的实际请求发送到相应的网站。此时网站看到的访问IP是代理IP,而不是我们电脑的实际IP地址,这样就可以避开网站的封禁限制(通俗的理解:我们的“身份证”被拉入访问黑名单,此时就可以用别人的“身份证”访问)。

  IP池:仍然存在单个代理IP很容易被禁止的问题。因此,可以在一个“池”(类似于线程池)中维护多个代理IP。当某个代理IP被封禁后,可以切换到其他代理IP,所以被封禁的概率会大大降低。

  代理IP的优点降低了被封禁的概率:因为有代理IP池,代理IP地址可以切换,避免了单点故障。代理IP池越大,被限制使用的概率越低。

  安全性提高:在IP代理平台上,用户可以过滤IP地址,限制内网对外网的访问权限,屏蔽指定的IP地址,控制用户对某些网络的访问权限,起到类似防火墙的作用,安全性大大提高。

  隐藏真实IP地址:通过代理IP,可以隐藏用户的真实IP,使用代理IP发起请求,从而保证隐私。(很多黑客在从事网络行为时会通过几个甚至几十个代理层层隐藏自己的真实身份,以免暴露自己的真实身份。)

  提高网络访问速度,减少延迟:通常IP代理都有缓冲的作用。当用户访问同一条消息时,可以直接从缓冲区读取返回,从而提高访问速度。

  避免地理访问限制:一些网站限制用户通过IP地址访问。使用代理IP平台,可以根据实际情况选择需要的地域IP,从而跳出地域访问限制(比如A想访问网站C,但是中间网络出现问题,可以先访问代理B,然后代理B再访问C,从而跳出限制)。代理IP的实际使用是由之前的理论知识铺垫的。这里有一个实用的方法来解释代理IP的使用,帮助你更好的理解代理IP在实际业务中的作用。

  首先,选择合适的代理池。这个演示是通过:IPIDEA代理池。注册可以获得100M流量,不够可以购买。

  申请地址:http://www.ipidea.net

  流程1:生成API链接

  过程2:保存生成的API链接供程序使用。

  二、实战案例

  案例目的:爬亚马逊网站电脑价格,进行数据分析。

  战斗地址:https://www.amazon.cn/gp/browse.html? node=106200071 ref _=nav _ em _ _ PC _ notebook _ 0 _ 2 _ 3 _ 2

  逻辑分析:通过浏览器调试工具查询需要获取信息的标签,然后使用xpath获取指定的元素数据,如下图所示:

  实施代码:

  导入请求

  导入json

  从lxml导入etree

  #代理对象

  代理={}

  #代理IP URL获取代理IP

  Proxy_pool_url=您在ipidea平台上申请的代理池的url地址

  res=requests.get(代理池url)

  #将响应数据转换成json对象

  resJson=json.loads(res.text)

  打印(resJson)

  #组装代理池(此处省略ip被禁时切换ip地址的逻辑,如有需要可自定义)

  对于resJson[data]中的项目:

  http _ items tr= http:// item[ IP ]: str(item[ port ])

  https _ items tr= https:// item[ IP ]: str(item[ port ])

  代理[http]=http_itemStr

  # proxy[ https ]=https _ itemStr

  打印(代理)

  #伪装成浏览器进行访问

  标题={

  连接:保持活动,

  Cache-Control: max-age=0 ,

  rtt: 50 ,

  下行链路: 10 ,

  ect: 4g ,

  sec-ch-ua : 不是;‘一个品牌’;v=99 ,谷歌Chrome ;v=97 ,铬;v=97 ,

  sec-ch-ua-mobile :?0,

  sec-ch-ua-platform : Windows ,

  升级-不安全-请求: 1 ,

  用户代理: Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/97 . 0 . 4692 . 71 Safari/537.36 ,

  Accept: text/html,application/xhtml xml,application/xml。q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,应用/签约-交换;v=b3q=0.9 ,

  Sec-Fetch-Site :同源,

  Sec-Fetch-Mode :导航,

  Sec-Fetch-User :?1,

  Sec-Fetch-Dest: document ,

  referer : https://www . Amazon . cn/default . ASP ,

  接受-语言: zh-CN,zh;q=0.9,en;q=0.8

  #查询参数

  params={

  节点: 106200071 ,

  ref _ : nav _ em _ _ PC _ notebook _ 0 _ 2 _ 3 _ 2 ,

  #使用代理IP启动crawler请求

  response=requests . get( https://www . Amazon . cn/gp/browse . html ,params,headers=headers,proxies=proxies)

  #读取计算机名称

  name_list=etree。HTML(response.text)。xpath(//h2/text())

  #阅读电脑价格

  price_list=etree。HTML(response.text)。xpath(//span[@ ]/text())

  #输出计算机名称和价格

  对于名称,zip中的价格(名称列表,价格列表):

  #删除名称前后的制表符和换行符

  nameStr=name . strip();

  print(名称,价格, \n )

  完成效果:

  欲善其事,必先利其器。稳定性在这个项目中起着至关重要的作用。程序运行频率越高,被限制的概率越大。引入代理IP可以规避大部分风险。IPIDEA代理池是一个不错的选择。除了可用IP量大(9000多万),还提供住宅IP等功能。有类似需求的可以去官网进一步了解。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: