
800819103
在線客服,實時響應
qq群
在線客服,實時響應
客服電話
13318873961
除了常見的IP限制,爬蟲在采集數據時還會遇到驗證碼研制,特別是12306的驗證碼,大家都深有體會,難倒了多少人??!
但神奇的是,難倒了大批人,爬蟲的速度還是那么的快,這是為什么呢?爬蟲怎么突破驗證碼限制的?下面小編介紹一下案例:
做了一個分布式的爬蟲爬取知乎用戶信息,將一個slave端放在了阿里云服務器上,爬了一個小時后提示“ip訪問頻繁,請進行驗證用于確認這些請求不是自動發出的“。
原來是爬的太快了,被知乎發現了,要求輸入驗證碼,類似以下
一般的圖片驗證碼,可以用云打碼或保存本地識別后再發送post請求之類的,這種拖動滑塊驗證碼在無界面的centos系統上就很難受了。
研究了半天終于找到了解決方案:將阿里云服務器作為代理服務器,本地瀏覽器使用代理ip登陸知乎,完成驗證,ip解除禁止。
使用squid:
安裝:yum install squid
配置:
1.vi /etc/squid/squid.conf, 在結尾處追加:
dns_nameservers 8.8.8.8
http_port 8000
http_access allow all
cache_mem 60 MB
2.注釋掉默認的http_access deny all
創建squid交換目錄:
cd /usr/sbin/
./squid -z
啟動squid、查看端口狀態:
./squid
netstat -ntl
停止squid:
./squid -k shutdown
此時,將瀏覽器的代理IP設置為你服務器的IP,端口設置成上面的8000,使用chrome直接設置代理會不管用,這里選擇用selenium
from seleniumimport webdriver
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("--proxy-server=http://服務器ip:8000")
url= 'https://www.zhihu.com'
driver = webdriver.Chrome(chrome_options = chromeOptions)
driver.get(url)
time.sleep(60)
等網頁打開滑動進行驗證,此時ip已經解除限制了。