agent Python piscine d'agent IP

  Lorsque vous utilisez des reptiles Python, se heurtent souvent à un site Web qui mécanisme anti-escalade. Nous pouvons ramper à travers les en-têtes de camouflage, mais le site peut encore obtenir votre ip, afin d'interdire votre adresse IP pour empêcher que des informations ramper.

  Dans la méthode de demande, nous pouvons dissimuler notre IP grâce à des paramètres proxies, certains site proxy ip gratuitement sur le site Web, vous pouvez explorer ces ip, piscine d'agent ip établi par le post-test.

  Il a recommandé une méthode commune de la tête de camouflage

  de UserAgent d'importation fake_useragent

  ua = UserAgent ()

  têtes = { 'User-Agent': ua.random}

  Ensuite arriver au point

  ip rampants (IPPool.py)

  les demandes d'importation

  de etree d'importation lxml

  de UserAgent d'importation fake_useragent

  # Disguise

  ua = UserAgent ()

  têtes = { 'User-Agent': ua.random}

  def get_ip ():

  ip_list = []

  # Chemin

  url = 'https://www.xicidaili.com/nt/' #ip vieillit, seule la première page crawling

  # Demande

  réponse = requests.get (url = url, les en-têtes des en-têtes =)

  # Set de codage

  response.encoding = response.apparent_encoding

  réponse = response.text

  réponse = etree.HTML (réponse)

  tr_list = response.xpath ( '// tr [@ class = "impair"]')

  pour i dans tr_list:

  #ip

  ip = i.xpath ( './ td [2] / texte ()') [0]

  # Numéro de port

  port = i.xpath ( './ td [3] / texte ()') [0]

  # Protocole

  accord = i.xpath ( './ td [6] / texte ()') [0]

  accord = agreement.lower ()

  # Montage du chemin complet

  ip = accord + ': //' + ip + ':' + port

  ip_list.append (ip)

  retour ip_list

  si __name__ == '__main__':

  ip_list = get_ip ()

  imprimer (ip_list)

  ip test

  Méthode d'essai un (du Pool import multiprocessing.dummy)

  les demandes d'importation

  de Pool d'importation multiprocessing.dummy

  # Crawling pour obtenir une liste d'IP

  de get_ip d'importation ippool

  test_list = get_ip ()

  # Définir une liste globale, utilisée pour stocker IP valide

  ip_list = []

  site d'essai #ip

  url = 'http://icanhazip.com'

  têtes = {

  'User-Agent': Mozilla / 5.0 (Windows NT 10.0, Win64, x64; rv: 70,0) Gecko / 20100101 Firefox / 70,0 '

  }

  def ip_test (ip):

  essayer:

  si ip.split ( ":") [0] == 'http':

  procurations = {

  'Http': ip

  }

  autre:

  procurations = {

  'Https': ip

  }

  réponse = requests.get (url = url, les en-têtes des en-têtes =, = proxies procurations, timeout = 3)

  ip_list.append (ip)

  print (ip + "Disponible")

  sauf:

  print (ip + "indisponible")

  si __name__ == '__main__':

  piscine = piscine (4)

  pool.map (ip_test, test_list)

  imprimer (ip_list)

  print ( "% s ip total Ramper, ip disponible:% s, ip est indisponible:% s" % (len (test_list), len (ip_list), len (test_list) -NBCAR (ip_list)))

  Les résultats des tests:

  Méthode d'essai Deux (Filetage de file d'attente multi-thread)

  filetage d'importation

  les demandes d'importation

  file d'attente d'importation

  de UserAgent d'importation fake_useragent

  # Crawling pour obtenir une liste d'IP

  de get_ip d'importation ippool

  test_list = get_ip ()

  # Définir une liste globale, utilisée pour stocker IP valide

  ip_pool = []

  # Camouflage tête aléatoire

  ua = UserAgent ()

  têtes = { 'User-Agent': ua.random}

  url = 'https://www.csdn.net/'

  # Url = 'http://icanhazip.com/'

  def test_ip (queue_list):

  while True:

  si queue_list.empty ():

  Pause

  autre:

  ip = queue_list.get ()

  si ip.split ( ":") [0] == 'http':

  procurations = {

  'Http': ip

  }

  autre:

  procurations = {

  'Https': ip

  }

  essayer:

  réponse = requests.get (url = url, les en-têtes des en-têtes =, = proxies procurations, timeout = 3)

  si response.status_code == 200:

  print ( "% de] [% s test, les résultats des tests sont disponibles []" % (threading.current_thread () nom., mandataires))

  ip_pool.append (ip)

  sauf:

  print ( "% de] [% s test, les résultats des tests ne sont pas disponibles []" % (threading.current_thread () nom., mandataires))

  si __name__ == '__main__':

  queue_list = Queue.Queue () # Créer une file d'attente

  # Ip de ramper dans la file d'attente

  pour i dans test_list:

  queue_list.put (i)

  # Créer un fil

  out_thread = [threading.Thread (target = test_ip, args = (queue_list,), name = "进程% s" % s objet) pour le point dans la plage (5)]

  pour le fil dans out_thread:

  Thread.Start ()

  pour le fil dans out_thread:

  Thread.join ()

  print ( 'Test Complete')

  imprimer (ip_pool)

  print ( "% s ip total Ramper, ip disponible:% s, ip est indisponible:% s" % (len (test_list), len (ip_pool), len (test_list) -NBCAR (ip_pool)))

  résultats:

  URL de test ne ont pas besoin si complexe, www.baidu.com une classe peut avoir un blogueur recommande un site Web de test: http: //icanhazip.com/

  Rencontrés lors du test d' une fosse, pas trop d' attention au protocole est http ou https, unifié avec le http, puis trouvé chaque ip peut être utilisé, bien sûr, cela est impossible, modifiée après un test réussi d'environ vingt-ip cinq ou plus. Zhengzhou, combien d' argent l' avortement http://www.kdwtrl.com/

  ip https://www.kuaidaili.com/free/intr/ crawling cette URL a également écrit (ip pas de traitement), mais un peu ip cette URL, donc il n'y a pas de test

  IPPool2.py

  les demandes d'importation

  de etree d'importation lxml

  de UserAgent d'importation fake_useragent

  # Disguise

  ua = UserAgent ()

  têtes = { 'User-Agent': ua.random}

  def get_ip ():

  ip_list = []

  # Chemin

  url = 'https://www.kuaidaili.com/free/intr/'

  # Demande

  réponse = requests.get (url = url, les en-têtes des en-têtes =)

  # Set de codage

  response.encoding = response.apparent_encoding

  réponse = response.text

  réponse = etree.HTML (réponse)

  tr_list = response.xpath ( '// * [@ id = "liste"] / table / tbody / tr')

  pour i dans tr_list:

  ip = i.xpath ( './ td [1] / texte ()') [0]

  ip_list.append (ip)

  retour ip_list

  si __name__ == '__main__':

  ip_list = get_ip ()

  # Print (ip_list)


Je suppose que tu aimes

Origine blog.51cto.com/14503791/2485400
conseillé
Classement