最省錢的爬蟲解決方案,比IP代理更划算


現狀:

1、網上提供代理IP池的解決方案非常多,價格也有高有低,包天/月/年的都有,品質都要靠自己去嘗試。

2、試過之后,發現成本相對高,每月要花200~300元, 所以希望研究一下是否有更性價比高的解決方案

 

分析思路:

1、網上介紹的ADSL撥號方案,需要到運營商處申請固網寬帶,有點麻煩,成本能控制在100左右

2、手機數據卡無限流量方案,一般在40GB流量之后會限速,手機ip地址可以更新,從而走新的公網ip(NAT方案),價格在50左右(手機可以買二手的,200以內)

      2.1、運營商提供上網的方案一般是公網IP池共享,手機終端獲得內網IP地址,運營商通過NAT方式,讓手機最終能上外網;

      2.2、當手機終端更換IP地址后,將會重新從公網IP池拿一個ip做NAT,遇到同一個ip的可能性不算大; 

設計方案:

1、電腦上的爬取數據程序,走手機路由(華為手機開啟USB共享網絡)

2、電腦上的其他程序,走辦公路由

3、當爬蟲程序請求發現ip地址被封殺之后,通過adb shell命令,將手機的ip地址重置,參見博文:  python3 控制安卓手機的飛行模式遇到的問題匯總

python指定請求走指定ip出口,代碼如下

#coding=utf-8
import requests,sys,socket
from requests_toolbelt.adapters import source


#本機有多個ip地址上網,走指定ip地址出口發起請求
s = requests.Session()
new_source = source.SourceAddressAdapter('192.168.124.20')
s.mount('http://', new_source)
s.mount('https://', new_source)
print(s.get('http://www.baidu.com/'))

其中有個模塊(requests_toolbelt), 需要提前下載好

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests_toolbelt

 

手機啟動usb共享網絡后,電腦上會出現兩條缺省路由,需要操作辦公網口,打開tcp/ip協議,高級,編輯默認網關的躍點數為1,重新啟用網卡后,躍點數顯示為2,優先級已經很高,所有網絡請求如果不特殊說明,都會走124網段出去

IPv4 路由表
==================================================
活動路由:
            網絡目標        網絡掩碼          網關               接口      躍點數
          0.0.0.0          0.0.0.0   192.168.42.129    192.168.42.37     10
          0.0.0.0          0.0.0.0    192.168.124.1   192.168.124.20      2

  

 

遇到過的問題:

1、曾經在手機上用啟動http代理的方式,由於程序寫得比較粗糙,將手機的tcp資源耗光,導致必須重啟手機才能恢復(TIME_WAIT 太多)

2、電腦上有多條路由時,擔心辦公使用的網絡會走手機,導致流量承受不住,一下子耗光。想刪掉缺省路由中走手機的那一塊,結果windows支持不給力,老會出錯

3、ADB命令時長會報錯,沒有好的辦法治,除非把腳本挪到手機的python環境去實現

 

最終效果:

1、代理IP池的成本節省下來, 每月只需要30元的流量費,手機用二手的華為手機

2、網絡速度稍慢於有線網絡,多個網站可能導致封殺,切換ip地址頻繁的情況(無法解決)

 

 2019-12-19 17:44:27 更新新方案

問題:usb經常在跑不到一天的情況下,和電腦失去連接。需要手動恢復,非常影響效率

新解決方案:拿掉usb線,走手機熱點


免責聲明!

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



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