python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

时间:2021-03-19 16:59:07

 

我们上次说了伪装头部

 

 

python爬虫17 | 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部

 

让自己的 python 爬虫假装是浏览器

 

小帅b主要是想让你知道

 

在爬取网站的时候

 

要多的站在对方的角度想问题

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

其实

 

这和泡妞差不多

 

你要多站在妹纸的角度思考

 

她的兴趣是什么

 

她喜欢什么

 

而不是自己感动自己

 

单方面的疯狂索取

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

哦..

 

扯远了

 

我们回到反爬虫

 

这次教你怎么伪装自己的 ip 地址

 

别让对方轻易的就把你给封掉

 

如何伪装呢

 

那么

 

接下来就是

 

学习 python 的正确姿势

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

 

其实

 

对于 python 来说

 

使用代理访问很简单

 

就拿我们经常使用的 requests 库来说

 

使用代理 ip 如下

 

定义代理IP

 

proxie = {         'http' : 'http://xx.xxx.xxx.xxx:xxxx',        'http' : 'http://xxx.xx.xx.xxx:xxx',        .... } 

 

使用代理

 

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

 

这样就可以使用你定义的代理地址去访问网站了

 

我知道你要问了

 

代理地址哪里来

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

在网上有很多免费的代理

 

随便搜就有一堆了

 

不过你知道的

 

免费的话很多人都去使用

 

所以这些代理IP很不稳定

 

如果你有钱的话

 

市面上有人就专门提供代理IP的

 

直接去买就行了

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

不想花钱呢?

 

可以搞一个IP代理池

 

主要就是通过 python 程序去抓取网上大量免费的代理 ip 

 

然后定时的去检测这些 ip 可不可以用

 

那么下次你要使用代理 ip 的时候

 

你只需要去自己的 ip 代理池里面拿就行了

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

 

道理都懂

但是不想自己弄一个代理池

有没有现成的?

 

不瞒你说

小帅b发现了一个不错的开源 ip 代理池

 

https://github.com/Python3WebSpider/ProxyPool.git

 

如何使用呢

 

首先使用 git clone 将源代码拉到你本地

 

git clone https://github.com/Python3WebSpider/ProxyPool.git

 

接着打开项目中的 setting.py

 

在这里可以配置相关信息

 

比如 Redis 的地址密码相关

 

(如果你之前没有使用过 redis 的话,可以到如下地址下载 https://github.com/MicrosoftArchive/redis/releases

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

 

接着在你 clone 下来的文件目录中

 

安装相关所需的 python 模块

 

pip3 install -r requirements.txt

 

接下来开启你的 redis

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

redis 的默认端口就是 6379

 

接着就可以运行 run.py 了

 

代理池开始运行 * Running on http://0.0.0.0:5555/ (Press CTRL+C to quit)开始抓取代理获取器开始执行Crawling http://www.66ip.cn/1.html正在抓取 http://www.66ip.cn/1.html抓取成功 http://www.66ip.cn/1.html 200成功获取到代理 201.69.7.108:9000成功获取到代理 111.67.97.58:36251成功获取到代理 187.32.159.61:51936成功获取到代理 60.13.42.154:9999成功获取到代理 106.14.5.129:80成功获取到代理 222.92.112.66:8080成功获取到代理 125.26.99.84:60493...

 

如果你在运行的时候出现这个错误

 

AttributeError: 'int' object has no attribute 'items'

 

更新一下 redis 版本

 

pip3 install redis==2.10.6 

 

运行 run.py 

 

这时候在你的 redis 中就有爬取到的代理 ip 了

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

项目跑起来之后

 

你就可以访问你的代理池了

 

比如随机获取一个代理 ip 地址

 

http://localhost:5555/random

 

这样访问之后就会获取到一个代理 ip

 

在代码中获取代理也不在话下啦

 

import requests
PROXY_POOL_URL = 'http://localhost:5555/random'
def get_proxy(): try: response = requests.get(PROXY_POOL_URL) if response.status_code == 200: return response.text except ConnectionError: return None

 

 

 

这样

 

我们就成功的在我们的代理池中获取代理 ip 了

 

那么下次谁还敢封你ip

 

你就拿出你的代理ip

 

继续爬呗

 

 

peace

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

帅b老仙

法力无边

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

 

 

python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会