使用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连接字符串的方法小结
Jul 13 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
Python turtle绘画象棋棋盘
Aug 21 Python
Python FtpLib模块应用操作详解
Dec 12 Python
Python autoescape标签用法解析
Jan 17 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 Python
python实现小程序推送页面收录脚本
Apr 20 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 Python
python中random模块详解
Mar 01 Python
python中的getter与setter你了解吗
Mar 24 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
详解Python中DOM方法的动态性
2015/04/11 Python
python获取目录下所有文件的方法
2015/06/01 Python
python操作mysql数据库
2017/03/05 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
出纳的岗位职责
2013/11/09 职场文书
财务部岗位职责
2013/11/19 职场文书
食品安全标语
2014/06/07 职场文书
医院标语大全
2014/06/23 职场文书
教师年度考核个人总结
2015/02/12 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
MySQL日期时间函数知识汇总
2022/03/17 MySQL