使用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打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
Python3.5多进程原理与用法实例分析
Apr 05 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
Django 迁移、操作数据库的方法
Aug 02 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
如何利用Python写个坦克大战
Nov 18 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
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
JS实现的二叉树算法完整实例
2017/04/06 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python中input和raw_input的一点区别
2014/10/21 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
Python实现购物车购物小程序
2018/04/18 Python
对python多线程与global变量详解
2018/11/09 Python
Python调用C语言的实现
2019/07/26 Python
利用python实现周期财务统计可视化
2019/08/25 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
Python 高效编程技巧分享
2020/09/10 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
小学毕业家长寄语
2014/01/19 职场文书
五年级音乐教学反思
2014/02/06 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
岗位说明书标准范本
2014/07/30 职场文书
医德考评自我评价
2014/09/14 职场文书
介绍信怎么写
2015/01/30 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
gojs实现蚂蚁线动画效果
2022/02/18 Javascript