使用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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python 12306抢火车票脚本
Feb 07 Python
用python处理图片实现图像中的像素访问
May 04 Python
在CMD命令行中运行python脚本的方法
May 12 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Python理解递归的方法总结
Jan 28 Python
python实现动态创建类的方法分析
Jun 25 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
python中函数返回多个结果的实例方法
Dec 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内置函数使用指南
2014/11/27 PHP
php组合排序简单实现方法
2016/10/15 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
JavaScript的Date()方法使用详解
2015/06/09 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
小程序云函数调用API接口的方法
2019/05/17 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
python3中的md5加密实例
2018/05/29 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
html5清空画布方法(三种)
2017/10/16 HTML / CSS
高校教师思想汇报
2014/01/11 职场文书
企业环保标语
2014/06/10 职场文书
火箭队口号
2014/06/18 职场文书
学校创先争优活动总结
2014/08/28 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
导游词之南京中山陵
2019/11/27 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python