python爬蟲18 | 就算你被封了也能繼續爬,使用IP代理池偽裝你的IP地址,讓IP飄一會


 

我們上次說了偽裝頭部

 

 

python爬蟲17 | 聽說你又被封 ip 了,你要學會偽裝好自己,這次說說偽裝你的頭部

 

讓自己的 python 爬蟲假裝是瀏覽器

 

小帥b主要是想讓你知道

 

在爬取網站的時候

 

要多的站在對方的角度想問題

 

 

其實

 

這和泡妞差不多

 

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

 

她的興趣是什么

 

她喜歡什么

 

而不是自己感動自己

 

單方面的瘋狂索取

 

 

哦..

 

扯遠了

 

我們回到反爬蟲

 

這次教你怎么偽裝自己的 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老仙

法力無邊

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM