咱們上次說了假裝頭部html
↓python
python爬蟲17 | 據說你又被封 ip 了,你要學會假裝好本身,此次說說假裝你的頭部git
讓本身的 python 爬蟲僞裝是瀏覽器github
小帥b主要是想讓你知道redis
在爬取網站的時候瀏覽器
要多的站在對方的角度想問題python爬蟲
其實dom
這和泡妞差很少ide
你要多站在妹紙的角度思考學習
她的興趣是什麼
她喜歡什麼
而不是本身感動本身
單方面的瘋狂索取
哦..
扯遠了
咱們回到反爬蟲
此次教你怎麼假裝本身的 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)
這樣就可使用你定義的代理地址去訪問網站了
我知道你要問了
代理地址哪裏來
在網上有不少免費的代理
隨便搜就有一堆了
不過你知道的
免費的話不少人都去使用
因此這些代理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...
若是你在運行的時候出現這個錯誤
更新一下 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老仙
法力無邊