使用python验证代理ip是否可用的实现方法

 更新时间:2018年07月25日 10:48:09   作者:罗盘上的方向  
验证代理IP是否可用。原理是使用代理IP访问指定网站,如果返回状态为200,表示这个代理是可以使用的。这篇文章重点给大家介绍使用python验证代理ip是否可用的实现方法,感兴趣的朋友一起看看吧

在使用爬虫爬取网络数据时,如果长时间对一个网站进行抓取时可能会遇到IP被封的情况,这种情况可以使用代理更换ip来突破服务器封IP的限制。

随手在百度上搜索免费代理IP,可以得到一系列的网站,这里我们通过对西刺网站的抓取来举例。

通过编写一个爬虫来抓取网站上面的IP地址,端口,及类型,把这些信息存到本地。这里不做介绍。

验证代理IP是否可用。原理是使用代理IP访问指定网站,如果返回状态为200,表示这个代理是可以使用的。

# _*_ coding:utf-8 _*_
import urllib2
import re
class TestProxy(object):
  def __init__(self):
    self.ip = '106.46.136.64'
    self.port = '808'
    self.url = 'http://www.baidu.com'
    self.timeout = 3
    self.regex = re.compile(r'baidu.com')
    self.run()
  def run(self):
    self.linkWithProxy()
  def linkWithProxy(self):
    server = 'http://'+ self.ip + ':'+ self.port
    opener = urllib2.build_opener(urllib2.ProxyHandler({'http':server}))
    urllib2.install_opener(opener)
    try:
      response = urllib2.urlopen(self.url, timeout=self.timeout)
    except:
      print '%s connect failed' % server
      return
    else:
      try:
        str = response.read()
      except:
        print '%s connect failed' % server
        return
      if self.regex.search(str):
        print '%s connect success .......' % server
        print self.ip + ':' + self.port
if __name__ == '__main__':
  Tp = TestProxy()

也可以使用requests包来进行验证,要少写好多代码

import requests
try:
  requests.get('http://wenshu.court.gov.cn/', proxies={"http":"http://121.31.154.12:8123"})
except:
  print 'connect failed'
else:
  print 'success'

把验证通过的IP保存在redis里面,在IP被禁止的时候可以从redis中取出来使用。

受@齐俊杰的提醒,添加一种使用telnet来验证的方法:

import telnetlib
try:
  telnetlib.Telnet('127.0.0.1', port='80', timeout=20)
except:
  print 'connect failed'
else:
  print 'success'

总结

以上所述是小编给大家介绍的使用python验证代理ip是否可用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Python实现类似jQuery使用中的链式调用的示例

    Python实现类似jQuery使用中的链式调用的示例

    chained calls链式调用其实多是指一种方法链的程序写法,这里我们来看一下Python实现类似jQuery使用中的链式调用的示例,首先说明一下什么是链式调用:
    2016-06-06
  • 一文带你重温一下Python的对象模型

    一文带你重温一下Python的对象模型

    在面向对象的理论中,有两个核心的概念:类和实例。在 Python 里面,类和实例都是对象,也就是所谓的类对象和实例对象。本文主要来大家重温一下Python对象模型的相关知识,感兴趣的可以了解一下
    2023-04-04
  • Linux下远程连接Jupyter+pyspark部署教程

    Linux下远程连接Jupyter+pyspark部署教程

    这篇文章主要为大家详细介绍了Linux下远程连接Jupyter+pyspark部署教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 模拟浏览器的Python爬虫工具全面深入探索

    模拟浏览器的Python爬虫工具全面深入探索

    Python爬虫是获取网页信息的重要工具,但有时网站对爬虫有限制,要求模拟浏览器行为,本文将深入探讨如何使用Python模拟浏览器行为进行网络数据抓取,我们将介绍相关工具和技术,提供详细的示例代码和解释
    2024-01-01
  • python中__call__方法示例分析

    python中__call__方法示例分析

    这篇文章主要介绍了python中__call__方法示例分析,较为详细的分析了python中__call__方法的用法,需要的朋友可以参考下
    2014-10-10
  • python中遍历文件的3个方法

    python中遍历文件的3个方法

    这篇文章主要介绍了python中遍历文件的3个方法,本文分别使用os.path.walk()、os.walk()、os.listdir()来实现,需要的朋友可以参考下
    2014-09-09
  • Python上下文管理器Content Manager

    Python上下文管理器Content Manager

    在Python中,我们会经常听到上下文管理器,那么上下文管理器到底是干什么的,本文就来介绍一下,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 关于微信小程序爬虫token自动更新问题

    关于微信小程序爬虫token自动更新问题

    本文主要介绍了关于微信小程序爬虫关于token自动更新问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • python基础教程之面向对象的一些概念

    python基础教程之面向对象的一些概念

    这篇文章主要介绍了python基础教程之面向对象的一些概念,面向对象是一种代码组织方式,让代码复用最大化,需要的朋友可以参考下
    2014-08-08
  • Python读取实时数据流示例

    Python读取实时数据流示例

    今天小编就为大家分享一篇Python读取实时数据流示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论