通过网络访问服务器时,服务器端会通过IP地址知道是谁来对其进行访问,我们在爬虫过程中,如果经常使用一个IP地址对同一个URL进行访问,此IP很有可能被服务器拉入黑名单,就访问不了此URL了,这是针对具有IP反爬措施的网站来说。

百度直接搜索IP就会看到本机IP。

既然有IP反爬措施,那就有反反爬对策,我们可以构建一个IP池,针对具有IP反爬措施的网站,每次访问时都随机取出来一个IP,这样就会很大程度上避免被服务器识别出爬虫,大大提高了爬取数据的成功率。

给大家分享两个代理的网站,一个是免费的,叫快代理

https://www.kuaidaili.com/free/intr/

另一个是付费的,叫流冠代理,需要充值

https://www.hailiangip.com/

没有谁好谁坏,小编使用的是后者,不是因为小编有钱,毕竟一分价钱一分货嘛

接下来说一下IP代理池的搭建,说是代理池,其实就是一个存放很多IP地址的列表,每次从列表中随机取出一个IP,用于对目标网站进行访问,也就是获得一个存放IP的列表

快代理就不说了,拿出来直接用就行了。

对于流冠代理,需要充钱,充值后会自动给你一个订单号,找到提取API的选项后,填写相关参数,点击生成API链接,就会出现一个URL,访问这个URL就得到一些IP地址,需要填写的东西很简单,基本上省份就写到全国,数量自己定,数据格式我一般选用JSON格式,便于提取数据。

在pycharm中我们利用requests中的get对此API链接进行访问,得到下图所示的字典内容

在键为data的值中,是一个有3个字典的列表,因为在生成API时参数填写的是3所以有3个元素,买的多生成的多。其中的ip和port是我们需要提取的,需要将其转换为字典格式才会被正常使用

例如  {'https': '223.215.98.186:10007'}

我们可以封装一个函数,要求就是传入一个api,会随机返回一个IP

import requests
import random
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# url = ''
def ip_pool(api_url):response = requests.get(url=api_url,headers=headers).json()# print(response)# print(response['data'])proxies_list = []for i in response['data']:ip = i['ip']port = i['port']ip_dict = {'https':'{}:{}'.format(ip,port)}proxies_list.append(ip_dict)# print(ip_dict)# print(proxies_list)return random.choice(proxies_list)
api_url = ''#此处传入自己购买的代理ip
ip = ip_pool(api_url)
print(ip)

封装好的函数如上,名称为ip_pool,我们只需要传入购买生成的api_url,就会随机返回一个ip.

大家可以试一下,前面提到的快代理这个网站具备IP反爬,构建一个循环不断地对它进行访问,打印一下response会发现,可能第4次或第5次  状态码就变成了503,不是200,这就表示你的IP被这个网站限制了。如果你使用代理池,利用不同的IP同样对它进行循环访问,那么你被限制的可能性大大降低。池里的IP越多,就越不会被限制。当然,你要是池里就放一两个IP,那没什么卵用。

最后说一下IP生成出来后,怎么传入代码中

在requests中,IP需要带入参数proxies中,就和url,headers一样

response = requests.get(url=url,headers=headers,proxies=ip)

这就可以使用ip了

另外,购买的ip很有可能因为具有时效性导致代理ip无法正常使用,这就需要大家购买更好的代理服务。

python反爬虫应对措施之搭建代理IP池相关推荐

  1. Python搭建代理IP池(一)- 获取 IP

    使用爬虫时,大部分网站都有一定的反爬措施,有些网站会限制每个 IP 的访问速度或访问次数,超出了它的限制你的 IP 就会被封掉.对于访问速度的处理比较简单,只要间隔一段时间爬取一次就行了,避免频繁访问 ...

  2. 利用多线程爬虫搭建代理ip池的两种方法(含源码)

    搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...

  3. Python搭建代理IP池(三)- 检测 IP

    在获取 IP 时,已经成功将各个网站的代理 IP 获取下来了,然后就需要一个检测模块来对所有的代理进行一轮轮的检测,检测可用就设置为满分,不可用分数就减 1,这样就可以实时改变每个代理的可用情况,在获 ...

  4. Python搭建代理IP池(二)- 存储 IP

    上一文写了如何从代理服务网站提取 IP,本文就讲解如何存储 IP,毕竟代理池还是要有一定量的 IP 数量才行.存储的方式有很多,直接一点的可以放在一个文本文件中,但操作起来不太灵活,而我选择的是 My ...

  5. 搭建代理IP池的方法

    突破次数的限制就可以使爬虫更高效的工作,代理IP是突破次数限制,提高爬虫高效工作的最好的工具.所以,很多人都想通过建立IP池的方法,实现换IP突破限制,那么这IP池如何进行搭建呢? 一,免费搭建代理I ...

  6. Python之爬虫 搭建代理ip池

    文章目录 前言 一.User-Agent 二.发送请求 三.解析数据 四.构建ip代理池,检测ip是否可用 五.完整代码 总结 前言 在使用爬虫的时候,很多网站都有一定的反爬措施,甚至在爬取大量的数据 ...

  7. Python爬虫热点项目之实现代理IP池(IP proxy pool)

    代理池概述 代理池就是由多个稳定可用代理IP组成的池子.用来应对ip反爬,而网上的免费代理稳定可用的极少,更有甚者连收费的也不都是稳定可用. 开发环境: windous,python3,sublime ...

  8. 获得代理ippython_Python搭建代理IP池实现获取IP的方法

    使用爬虫时,大部分网站都有一定的反爬措施,有些网站会限制每个 IP 的访问速度或访问次数,超出了它的限制你的 IP 就会被封掉.对于访问速度的处理比较简单,只要间隔一段时间爬取一次就行了,避免频繁访问 ...

  9. python反爬虫应对之借助平台超级鹰突破网页验证码识别

    在爬虫过程中,有些网页需要登录才能获取里面的数据,在大部分的登录过程中,都会需要一个叫验证码识别,目前的网页有各种各样的验证码,有数字加字母的组合,有物品识别等等 在代码进行网页爬取过程中,如果由人为 ...

最新文章

  1. GentleNet使用之详细图解[语法使用增强版]
  2. my.cnf mysqld mysql_MySQL配置文件my.cnf详解【mysqld】模块(二)
  3. 【django】路由传递参数
  4. 【Python】list 之 extend 和 append 的区别
  5. BeetleX.FastHttpApi之JWT和自定义访问验证
  6. MySQL初始化安装部署
  7. 原生js发送ajax请求
  8. MATLAB平台学习(9)信道模型
  9. visio如何改变折线箭头拐弯方向
  10. n1进入recovery模式_斐讯N1盒子刷机救砖教程
  11. 向Spring大佬低头--大量源码流出解析
  12. 数据分析之数理统计基础
  13. 操作系统进程实验课程设计
  14. JAVA AIO编程
  15. git npm命令集合
  16. Geometry理解
  17. Jhipster 中的 Liquibase 正确使用方法
  18. N76E003 学习一 点亮LED
  19. gocolly-字符串cookies处理(4)
  20. Ubuntu下Matlab在线安装

热门文章

  1. 电子商务网站设计分析--首屏设计
  2. 无线传感网-定位技术1
  3. android 关于启动页广告的总结。
  4. 宝塔面板安装docker和nacos教程
  5. C++和qt designer的混合编程--动态计算加法小工具
  6. android bitmap对象,android 创建bitmap的多种方式
  7. Vue学习笔记---------Vue2
  8. 生而不凡,真撼于新!三星Neo QLED云南首发
  9. 关于JQuery中removeAttr方法的坑
  10. 计算机视觉:分割一切AI大模型segment-anything