使用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实现批量转换文件编码(批转换编码示例)
Jan 23 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
Python中用于返回绝对值的abs()方法
May 14 Python
python实现壁纸批量下载代码实例
Jan 25 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
Selenium元素的常用操作方法分析
Aug 10 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
详解Python字符串切片
May 20 Python
python实现文件的备份流程详解
Jun 18 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 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 calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python文件和流(实例讲解)
2017/09/12 Python
python连接mongodb密码认证实例
2018/10/16 Python
Django工程的分层结构详解
2019/07/18 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
经管应届生求职信
2013/11/17 职场文书
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
人大调研汇报材料
2014/08/14 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书