代理IP 有效性检测
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
- 摘要
- 原理
- 服务器端
- _SERVER
- 脚本
- 客户端
- urllib2
- requests
- 完整代码
- 演示
- 提示
- 清洗效果
- 总结
摘要
昨天下午的时候,真的是无语至极。本以为CSDN上博友们应都是与人为善类型的。没想到都博客专家级别的了,出口竟是如此不堪。难道请教问题就得是一副高高在上,别人必须给你解决问题,给你代码吗?
对于此类人,我不做过多评价。我只会在心里默默说一句,好自为之吧。希望此后永远不会有交集!
言归正传,写爬虫的时候。难免会使用代理IP技术。于Python中调用代理IP实则是一件轻松的事,但是有一个不大不小的问题,那就是代理IP的有效性。
往往做爬虫的时候会事先爬取很多的代理ip作为备用,但是有些可能还用,有些可能就失效了。所以程序会因此变得不甚稳定。于是在爬虫运行之前,保证代理IP的高可用性,是有一定的必要的。
今日,就来做这么一件“清洗”工作。
原理
当然,测试代理IP有效性的方法有很多。我想到的无非也就其中一种,不具权威性,仅供参考罢了。
我个人认为,测试代理IP有效性还是得从服务器端下手,毕竟代理IP是要去访问真正的服务器端的。所以在服务器端进行验证最合适不过了。服务器端验证完毕之后,将结果返回给客户端,如此“清洗”工作就可以据此完成。保留有效的代理IP,去除失效的代理IP。
接下来,按部就班的实现就行了。
服务器端
服务器端使用什么语言都是可以的,我这里正好有php环境,自然选择了PHP了。
$_SERVER
$_SERVER
变量中包含了客户端来访的全部信息,所以仅仅需要把相关的部分剖取出来就够了。
脚本
<?phpecho "Client IP:".$_SERVER['REMOTE_ADDR'];
- 1
- 2
是不是足够简单。
不过为了接下来客户端“清洗”方便,我们仅仅把客户端IP输出就行了。这样免得客户端在进行字符串分割处理。
<?phpecho $_SERVER['REMOTE_ADDR'];
- 1
- 2
简单的测试一下:
此时,仅仅使用浏览器作为客户端,所以没用到代理IP。可见,服务器端搭建依然成功了。接下来就是在客户端进行验证了。
客户端
客户端这块,毕竟爬虫使用Python的还是比较多的,而且对我自己而言,Python也顺手,所以就是用Python好了。
在我印象中,涉及到代理部分的库以urllib2和requests最为常见。下面简单的贴下代码。
urllib2
在urllib2中使用的代理IP分为http类型和https类型,需要分别处理一下。
- http类型:
proxy=urllib2.ProxyHandler({'http': '代理IP'})opener=urllib2.build_opener(proxy)urllib2.install_opener(opener)
- 1
- 2
- 3
- https类型:
proxy=urllib2.ProxyHandler({'https': '代理IP'})opener=urllib2.build_opener(proxy)urllib2.install_opener(opener)
- 1
- 2
- 3
- 4
- 5
requests
相比之下,requests 就更为方便了。不管是http类型还是https类型都是兼容的。统统放到一个字典内说明即可。
#coding: utf8import requestsproxies = { "http": "115.231.105.109:8081", "http": "101.230.214.25:8080", "https": "218.29.111.106:9999", }result = requests.get('http://101.200.58.242/temp/proxytest.php', proxies=proxies)print result.content
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
完整代码
# coding: utf8import requests# 本机IPlocalip = "111.117.112.164"# 待清洗代理IP数据池proxies = [ {"http": "115.231.105.109:8081" }, {"http": "218.76.106.78:3128" }, {"http": "183.185.0.18:9797"}, {"https": "218.29.111.106:9999" }, ]# 有效代理IP池proxypool = []# 清洗代理IP,去除无效的代理IPfor index in range(len(proxies)): print proxies[index] try: result = requests.get('http://101.200.58.242/temp/proxytest.php', proxies=proxies[index]) except Exception as e: continue # 与本机IP对比,相等则说明没用到代理IP,为无效项 if result.content != localip: proxypool.append(proxies[index])print proxypool
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
这样就可以简单的测试出代理IP的有效性了。当然效率确实不够高,有必要的话使用多线程来进行加速也是可以的。
演示
提示
在演示之前,我觉得还是有必要啰嗦一下的。
在做爬虫的时候,不管是公司内还是学校里。大部分都是在局域网内,这样获取本机的IP就需要动点心思了。当然,现在网络上资源很多,各种获取本机IP的接口。随便处理一下就可以了。如一开始我那样直接用浏览器访问自己的服务器来测试也是可以的。
下面介绍一个最常用的。直接在浏览器上输入ip。
然后就可以使用这个本机IP作为过滤条件来进行清理工作了。当然了,这一步还可以更加的智能化,继续写点代码来完成,我在这就权当是抛砖引玉吧。博友有需要的话知道有这么个思路就行了。
清洗效果
最后来看看测试的效果吧,我是在网上随便找了个网站,直接手动复制的几个代理IP(代码中有记录)。然后直接测了一下,发现还不错,有三个是能用的。
总结
最后回顾一下,本次试验代码量很少。但是思路还是蛮清晰的。实现起来也比较简单。
需要注意的是这个测试需要有服务器的支持,否则在本地localhost的时候代理IP不能有效的工作。
最后,还是觉得:
做事之前还是先学会做人的好。
社会上不是每一个人都能淡然面对他人的无礼的,总会有让你后悔的那天。与君共勉。
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
代理IP 有效性检测相关推荐
- 代理ip最新识别方法及代理ip有效性检测方法
代理ip最新识别方法以及代理ip有效性检测方法 一.代理ip常见的一些功能 1.突破自身ip访问限制,现在有许多的网站都对ip地址访问进行了限制,这时则可以通过代理ip来突破限制,让自己进入网站. 2 ...
- python爬取国内代理ip_【python】国内高匿代理爬取,并验证代理ip有效性
运行环境:python 3.7.3 所需库: 1. requests 2. lxml 3. time 4. multiprocessing 5. sys 目的:构建自己的代理ip池,针对封ip型反爬虫 ...
- 测试代理IP有效性的几种方式-芝麻ip
通常我们用的IP代理都是付费购买的,因为免费的IP代理有效性特别低,可用率也不高,而且使用之前需要检查IP地址是否可用,因此要如何检查IP代理是否有效呢?下面介绍几种检查IP代理有效性的方式. 1.T ...
- 获取免费代理IP,并检验IP有效性
爬虫程序访问网站,速度很快,很容易突破网站设置的访问次数,此情况下就会被停止访问,或者IP被封.如果此时能有一些代理IP,切换不同的代理IP去访问网站,使网站以为是从不同的机器上访问的,那么代理IP背 ...
- 从零开始构建自己的爬虫代理IP数据库并定期检验IP有效性...
ProxyIPPool 从零开始构建自己的代理IP池:根据代理IP网址抓取新的代理IP:对历史代理IP有效性验证 源码地址:https://github.com/TOMO-CAT/ProxyIPPoo ...
- Python每日一练(24)-requests 模块获取免费的代理并检测代理 IP 是否有效
目录 1. 通过代理服务发送请求 2. 获取免费的代理 IP 3. 检测代理 IP 是否有效 1. 通过代理服务发送请求 在爬取网页的过程中,经常会出现不久前可以爬取的网页现在无法爬取的情况,这是因为 ...
- 测试代理ip是否有效
(1)免费ip使用地址:www.xicidaili.com (2)编写脚本测试ip是否有效 推荐大家看一下这个博客:https://blog.csdn.net/Oscer2016/article/de ...
- python爬取高匿代理IP(再也不用担心会进小黑屋了)
一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...
- Python 抓取可用代理IP
问题描述 在做数据抓取的时候,经常会碰到有些网站对同一IP的访问频率做限制.遇到这种情况一般只有两种解决方案: 降低抓取频率.这种方法在数据变化不频繁,数据量不大的情况下还好,但是,如果数据变化频繁或 ...
最新文章
- numpy高级操作,求高维矩阵的距离矩阵(方阵)以及 求某一个维度的累加和 , 矩阵切片操作
- elk-Logstash
- 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
- .tar.bz2文件解压命令
- Mac笔记本安装Webstrom
- nginx导致的session丢失的解决方法
- Silverlight:纠结的快捷键问题
- Abp框架 Abp中使用Redis
- python可视化拖拽编程平台_PythonEditor可视化拼插编辑器:编程不用写代码,拖拖拽拽就可以!...
- 微信小程序优购商城项目总结
- 如何成为一个具有批判性思维的人?
- [Unity特效]使用Projector投影仪来制作角色脚下的特效圆环以及技能指示器skill indicator
- 英文标题首字母大写规则
- Android 2 时代到来了,敢为天下先是我等求知若渴的程序员的优秀品质
- Google Guava Striped 实现细粒度锁
- 计算机毕业设计(2)python毕设作品之旅游景点景区售票系统
- 关于爱国者***的追踪报道[转]
- 使用PyTorch进行知识蒸馏的代码示例
- 几个不错的英语学习网站
- 宅在家的这几天,突然收到(余额宝)视频面试,四面成功拿下offer