400-998-9776转2 服务时间:周一至周日 9:00-23:00 注意:本站不提供境外服务本站不提供境外服务

返回

同时使用用户代理池与代理IP池

发布时间:2019-12-04 15:12:23 来源:IP精灵

  网站爬虫的时候,我们会受到一些反爬虫阻碍,但是我们可以利用代理IP来冲破限制。常见比较多的有对IP地址的访问次数限制,以及对UA的限制,我们可以同时将用户代理池跟代理IP池一同使用来突破。

  如何同时使用用户代理池跟代理IP池?以下是IP精灵带来的操作教程,大家可以参考一下。

  封装成函数:

  import urllib.request

  import re

  import random

  uapools=[

  'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0',

  'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER',

  'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',

  'Mozilla/5.0 (Windows; U; Windows NT 6.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12',

  ]

  ippools=[

  "163.125.70.22",

  "111.231.90.122",

  "121.69.37.6",

  ]

  def ua_ip(myurl):

  def ip(ippools,uapools):

  thisip=random.choice(ippools)

  print(thisip)

  thisua = random.choice(uapools)

  print(thisua)

  headers = ("User-Agent", thisua)

  proxy=urllib.request.ProxyHandler({"http":thisip})

  opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)

  opener.addheaders = [headers]

  urllib.request.install_opener(opener)

  for i in range(5):

  try:

  ip(ippools,uapools)

  url=myurl

  data=urllib.request.urlopen(url).read().decode("utf-8","ignore")

  print(len(data))

  break

  except Exception as err:

  print(err)

  return data

  data=ua_ip("https://www.baidu.com/")

  fp=open("uaip.html","w",encoding="utf-8")

  fp.write(data)

  fp.close()

  封装成模块:

  把模块拷贝到python目录  

同时使用用户代理池与代理IP池

  使用:

  from uaip import *

  data=ua_ip("https://www.baidu.com/")

  fp=open("baidu.html","w",encoding="utf-8")

  fp.write(data)

  fp.close()

  以上我们就可以设置好同时使用用户代理池跟代理IP池了,大部分网站的爬虫限制,只要使用上这两招,基本上就可以解除。