使用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 相关文章推荐
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
通过Python实现自动填写调查问卷
Sep 06 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
python 实现在Excel末尾增加新行
May 02 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 Python
Django中的静态文件管理过程解析
Aug 01 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
python实现画图工具
Aug 27 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自带的进位制之间的转换函数
2013/06/08 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
vue自定义filters过滤器
2018/04/26 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
彩色的非洲教学反思
2014/02/18 职场文书
安全标语口号
2014/06/09 职场文书
诚信考试标语
2014/06/24 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
Django+Celery实现定时任务的示例
2021/06/23 Python
MySQL 计算连续登录天数
2022/05/11 MySQL