如何同时使用用户代理池与ip代理池

发布时间:2020-07-08 关注热度:°C

  网站爬虫的时候,我们会受到一些反爬虫阻碍,但是我们可以利用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代理池了,大部分网站的爬虫限制,只要使用上这两招,基本上就可以解除。

版权声明:本文为IP海(iphai.cn)原创作品,未经许可,禁止转载!

Copyright © www.iphai.cn. All Rights Reserved. IP海 版权所有.
IP海仅提供中国内IP加速服务,无法跨境联网,用户应遵守《服务条款》内容,严禁用户使用IP海从事任何违法犯罪行为。
ICP备案鄂ICP备19030659号-3 公安备案鄂公网安备42100302000141号 计算机软件著作权证计算机软件著作权证 ICP/EDI许可证ICP/EDI许可证:鄂B2-20200106

微信扫一扫咨询