Python 学习第 36 天,非必要不要使用!!!!!!!
在爬虫过程中,我们常常需要大量访问一个网站,以便快速获取信息。但网站的服务器对于这类频繁的请求会有防御机制,也就是说,它会判定这样的行为不正常,将这个 IP 判定为 "爬虫" 后拉进黑名单,这样不光我们设置的爬虫程序失去作用,自己的账号也会被封掉。
如何避免被封号的风险呢?我们的应对方法是:接入第三方代理。
一、代理
代理通常分为:
**(1) HTTP / HTTPS 代理:**最常用,适配绝大多数网页爬虫,支持 http/https 请求
**(2) Socks5 代理:**底层转发,兼容性更强,可适配浏览器、Socket、部分加密请求
第三方代理按照 "IP 来源" 分,可以分为:
**(1) 数据中心代理(DC):**速度快、便宜、IP 多,但容易被识别为爬虫,适合爬取非敏感、公开、低频(新闻、博客、公开榜单)的场景
**(2) 住宅代理(Residential/ISP):**真实家庭宽带 IP,最像真人,被封概率低,但比较贵,适合需要爬取电商、社交、评论、登录态、高反爬的场景
**(3) 移动代理(4G/5G):**手机基站 IP,匿名性最高,但价格最贵,适合需要极限反爬、APP 爬虫、注册 / 养号的场景
按照 "IP 是否固定" 可分为:
**(1) 静态代理(固定 IP):**稳定、会话不掉、适合登录后长期爬,但极易被封,不能高频爬取,适合每天少量爬取,且需要保持登录状态
**(2) 动态代理(每次 / 每分钟换 IP):**抗封强、量大、适合大规模采集,但会话比较难保持,速度波动有点大,适用于需要高频、大批量、不登录(主流爬虫首选)爬取的场景
**(3) 隧道代理(只给你一个入口,后端自动换 IP):**最简单,不用管 IP 池,一行配置搞定,但有点贵、可控性弱,适合不想写代理池、快速开发、长期项目的场景
获取代理的渠道很多,但尽量选择官方大厂的代理,选择高匿名性的 IP,这样才能保证自己的账号安全。
二、接入代理流程
1. 安装包
pip install requests
2. 导入包
import requests
3. 找到代理
我们用免费代理展示:理想下选用 "高匿开发代理" 中的代理地址(但实际上很难在免费的代理中找到可用的,所以也可以选择其他的)。我们需要复制的信息有 IP 地址、PORT 接口,挑选标准可以看 "响应速度(秒)",注意:代理算是中间商,且免费的代理一般会比我们正常请求要慢,如果一个 IP 不行,就换另一个。

4. 接入及其他操作
(1) 设置目标网址
url = "https://www.baidu.com/"
(2) 设置第三方代理信息,格式:变量名 = {"协议名":"协议名://IP:PORT", "协议名":"协议名://IP:PORT", ......}
proxy = {
"http":"http://IP地址:PORT接口",
"https":"http://IP地址:PORT接口"
}
(3) 在请求中接入代理
res = requests.get(url, proxies = proxy)
res.encoding = "utf-8"
print(res.text)
运行结果出现 TimeoutError,说明所用代理可能出现已失效、IP 被封禁、端口错误、网络不通、免费代理不稳定等问题,此时就需要在步骤 (2) 的代码中换一个代理
示例仅为格式演示,请勿使用来源不明的免费代理,避免安全风险。
注意合法爬虫