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

 

咱们上次说了假装头部html

 

python

 

python爬虫17 | 据说你又被封 ip 了,你要学会假装好本身,此次说说假装你的头部git

 

让本身的 python 爬虫伪装是浏览器github

 

小帅b主要是想让你知道redis

 

在爬取网站的时候浏览器

 

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

 

 

其实dom

 

这和泡妞差很少ide

 

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

 

她的兴趣是什么

 

她喜欢什么

 

而不是本身感动本身

 

单方面的疯狂索取

 

 

哦..

 

扯远了

 

咱们回到反爬虫

 

此次教你怎么假装本身的 ip 地址

 

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

 

如何假装呢

 

那么

 

接下来就是

 

学习 python 的正确姿式

 

 

 

其实

 

对于 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)

 

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

 

我知道你要问了

 

代理地址哪里来

 

 

在网上有不少免费的代理

 

随便搜就有一堆了

 

不过你知道的

 

免费的话不少人都去使用

 

因此这些代理IP很不稳定

 

若是你有钱的话

 

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

 

直接去买就好了

 

 

不想花钱呢?

 

能够搞一个IP代理池

 

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

 

而后定时的去检测这些 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

 

 

 

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

 

安装相关所需的 python 模块

 

pip3 install -r requirements.txt

 

接下来开启你的 redis

 

 

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 了

 

 

项目跑起来以后

 

你就能够访问你的代理池了

 

好比随机获取一个代理 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

 

帅b老仙

法力无边

 

 

 

相关文章
相关标签/搜索