使用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 list操作用法总结
Nov 10 Python
python opencv之SURF算法示例
Feb 24 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
安装python及pycharm的教程图解
Oct 10 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
python中sys模块的介绍与实例
Apr 17 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函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
python实现图像全景拼接
2020/03/27 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
python 如何引入协程和原理分析
2020/11/30 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
工程造价与管理专业应届生求职信
2013/11/23 职场文书
自荐书范文
2013/12/08 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
库房管理员岗位职责
2015/02/12 职场文书
风之谷观后感
2015/06/11 职场文书