筛选免费ip代理的步骤

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

  在搜索引擎上找到的免费ip代理网站,我们对其进行爬取之后,这些IP需要经过检测。因为免费ip代理的可用率是比较低的,因为它具有开放性,所以要经过下面步骤才能将有用的IP筛选出来。

免费ip代理的筛选验证步骤

  1、ip代理验证

  由于免费的ip代理很多都是无法使用,或是不稳定,或是时效短。所以验证ip代理是否可用,就非常有必要。主要验证原理:使用ip代理去访问网页,判断是否能够正常访问。在此我选择的网站是“站长之家”,这个网站可用直接返回你当前使用的ip以及ip所在地。这里需要注意的是访问前可以设定连接超时的时间如果访问时间超过一定时间,就直接跳过这个ip代理。建议是设定在2秒内,具体的可以看以下函数:

  def ip_test(ip_proxies):

  """

  验证单个ip代理是否可用

  :param ip_proxies: 待验证ip,例如:101.96.10.36:88

  :return:

  """

  url = "http://ip.chinaz.com/"

  headers = {

  "Host": "ip.chinaz.com",

  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0",

  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

  "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",

  "Accept-Encoding": "gzip, deflate",

  "Referer": "https://blog.csdn.net/Winterto1990/article/details/51220307",

  "Connection": "keep-alive",

  "Upgrade-Insecure-Requests": "1",

  "Cache-Control": "max-age=0",

  }

  proxies = {"http": "http://" + ip_proxies, } # 设置代理

  res = requests.get(url, headers=headers, proxies=proxies, timeout=1) # timeout为设定的相应时长,建议在2秒内

  # 解析网页

  soup = BeautifulSoup(res.text, "html.parser")

  info_list = soup.find_all("p", {"class": "getlist pl10"})

  for info in info_list:

  is_local = info.get_text()

  print(info.get_text())

  return is_local.find("XXX.XXX.XXX.XXX") # 判断是否为本地的地址

  2、批量验证ip代理

  要批量的对ip代理进行验证,实际上这就是调用上一步中验证ip代理中的程序。具体程序如下:

  def ip_batch_inspection(read_path, save_path):

  """

  验证多个ip代理是否可用

  :param read_path: ip代理文件路径

  :param save_path: 验证可用的ip代理保存路径

  :return:

  """

  with open(read_path, "r") as fr:

  lines = fr.readlines()

  fr.close()

  count = 0

  file_name = read_path.split("/")

  print(file_name[-1] + "文件共有 " + str(len(lines)) + " 条数据")

  for line in lines:

  count += 1

  ip_proxies = line.replace(" ", "")

  try:

  is_local = ip_test(ip_proxies) # 如果是本地ip,返回值为大于0数值

  if is_local < 0:

  with open(save_path, "a") as fs:

  fs.write(ip_proxies + " ")

  except Exception as e:

  pass

  # print("ip不可用")

  print("验证中......%.2f%%" % (count/len(lines)*100))

  print("验证完毕")

  完成以上2步之后,我们就完成了免费ip代理的使用前准备了,可以放到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

微信扫一扫咨询