使用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 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
python中的内置函数getattr()介绍及示例
Jul 20 Python
简单谈谈python的反射机制
Jun 28 Python
Python实现的圆形绘制(画圆)示例
Jan 31 Python
python爬取个性签名的方法
Jun 17 Python
python微信好友数据分析详解
Nov 19 Python
python openpyxl使用方法详解
Jul 18 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
python实现最短路径的实例方法
Jul 19 Python
python自然语言处理之字典树知识总结
Apr 25 Python
Python图像处理之图像拼接
Apr 28 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实现加密的几种方式介绍
2015/02/22 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
详解Python中的条件判断语句
2015/05/14 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
公司总经理岗位职责
2015/04/01 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
2015年社区工作总结
2015/04/08 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
MySQL 计算连续登录天数
2022/05/11 MySQL