手把手教你用Python搭建IP代理池,轻松破解请求频率限制反爬虫

(点击进入免费报名通道)

来 源:志斌的Python笔记

作 者:志斌

我们所写的爬虫,它对服务器发出的网络请求频率要比正常用户的高的多,从而开发者可以将请求频率过高的用户视为爬虫程序,从而来限制爬虫程序。

今天就来给大家分享一下,如何用Python搭建一个IP代理池,来破解服务器通过对用户请求频率进行限制的反爬虫。

01

原理

因为客户端的IP地址是唯一的,所以开发者便将IP地址作为客户端的身份标识。

服务器可以根据客户端的IP的访问次数来标识记录,从而计算出它的请求频率。然后,对于请求频率过高的客户端进行反爬虫限制。

02

破解

其实破解请求频率限制反爬虫是十分简单的,因为Requests库中就有一个proxies参数,就是专门为使用IP来准备的,具体使用方法如下:

import requests

proxies = {

"http": ":3128",

"https": ":1080",

}

requests.get("", proxies=proxies)

03 搭建IP代理池

搭建一个IP代理池分为三个模块,分别是爬取模块、检测模块、存储模块。下面让我们来看看这三个模块要怎么写吧。

01 爬取模块

我们此次是在百度上搜索的一个免费的IP代理网站对其代理IP进行爬取。

我们打开开发者模式,然后输入对网页进行观察,我们发现数据存储在源网页中。

既然我们已经发现数据的存储位置和存储形式了,那么就可以发起请求,提取数据了,代码如下:

import requests

import re

headers = {

Connection: keep-alive,

sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92",

sec-ch-ua-mobile: ?0,

Upgrade-Insecure-Requests: 1,

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36,

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9,

Sec-Fetch-Site: same-origin,

Sec-Fetch-Mode: navigate,

Sec-Fetch-User: ?1,

Sec-Fetch-Dest: document,

Referer: 1/,

Accept-Language: zh-CN,zh;q=0.9,

}

for page in range(1,50):

response = requests.get(f{page}/, headers=headers, cookies=cookies)

ip_list = re.findall(data-title="IP">(.*?)</td>,response.text)

02 检测模块

因为我们是爬取的免费的IP,所以我们要对其进行检测,看看是否失效了,毕竟便宜没好货,好货不便宜么~ 检测代码如下:

list =

for ip in ip_list:

try:

response = requests.get( proxies=ip, timeout=2)

if response.status_code == 200:

list.append(ip)

except:

pass

else:

print(ip, 检测通过)

03 存储模块

我这里是将检测出来可以使用的IP代理存到了csv文件中去,大家也可以尝试使用其他类型的存储,代码如下:

import csv

with open(ip.csv,a,newline=) as f:

writer = csv.writer(f)

writer.writerow(list)

04

小结

1、本文详细介绍了如何破解请求频率限制的反爬虫,并教大家搭建一个自己的IP代理池。

2、使用代理IP来进行爬虫是当前一种非常流行的方式,因为每个用户端的IP是唯一的,一旦被认为是爬虫给限制或者是封禁了,那么对于用户来说会造成很大的损失。

3、免费的IP代理质量不如付费的,如果有大量的需求还是需要购买一下专业的。

4、本文仅供学习参考,不做它用。

END

爱数据·数据职场

知识分享社群

零基础/转行/跳槽/提升

【社群福利】

• 每周1次数据大咖免费直播分享

• 不定时内推岗位信息推送

• 分享数据行业、岗位最新动态

• 专属1v1职业生涯建议

爱数据学习社

入群一起学