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


Posted in Python onJuly 25, 2018

在使用爬虫爬取网络数据时,如果长时间对一个网站进行抓取时可能会遇到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 相关文章推荐
跟老齐学Python之通过Python连接数据库
Oct 28 Python
python网络编程之数据传输UDP实例分析
May 20 Python
Python subprocess模块详细解读
Jan 29 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
利用nohup来开启python文件的方法
Jan 14 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
Python接口测试get请求过程详解
Feb 28 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
python中的被动信息搜集
Apr 29 Python
python获取字符串中的email
Mar 31 Python
Python OpenCV形态学运算示例详解
Apr 07 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 #Python
python requests 测试代理ip是否生效
Jul 25 #Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 #Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 #Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 #Python
python中的常量和变量代码详解
Jul 25 #Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 #Python
You might like
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python三大神器之fabric使用教程
2019/06/10 Python
深入解析神经网络从原理到实现
2019/07/26 Python
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
应届护士推荐信
2013/11/16 职场文书
管理心得体会
2013/12/28 职场文书
大学生自我鉴定范文
2013/12/28 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
新闻学专业求职信
2014/07/28 职场文书
趵突泉导游词
2015/02/03 职场文书
人事主管岗位职责
2015/02/04 职场文书
学生病假条怎么写
2015/08/17 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
Python基础教程,Python入门教程(超详细)
2021/06/24 Python