使用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监控主机是否存活并以邮件报警
Sep 22 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
python实现图像识别功能
Jan 29 Python
python使用xslt提取网页数据的方法
Feb 23 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
python psutil监控进程实例
Dec 17 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
python为QT程序添加图标的方法详解
Mar 09 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
python实现吃苹果小游戏
Mar 21 Python
python logging.info在终端没输出的解决
May 12 Python
如何清空python的变量
Jul 05 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
vue中英文切换实例代码
2020/01/21 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
一套Java笔试题
2016/08/20 面试题
大学生求职信
2014/06/17 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
单位工资证明范本
2015/06/12 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
python多次执行绘制条形图
2022/04/20 Python