使用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中的exec、eval使用实例
Sep 23 Python
Python实现读取json文件到excel表
Nov 18 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
详解python的ORM中Pony用法
Feb 09 Python
对pandas中to_dict的用法详解
Jun 05 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 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
星际实力自我测试
2020/03/04 星际争霸
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
非常好的php目录导航文件代码
2006/10/09 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
Python 对象中的数据类型
2017/05/13 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
毕业生教师求职信
2013/10/20 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
成绩单家长评语大全
2014/04/16 职场文书
自主招生推荐信范文
2014/05/10 职场文书
迎新生标语大全
2014/10/06 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
六年级语文教学反思
2016/03/03 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python