分享一下我老师大神的人工智能教程!零基础,通俗易懂!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 有效性检测相关推荐

  1. 代理ip最新识别方法及代理ip有效性检测方法

    代理ip最新识别方法以及代理ip有效性检测方法 一.代理ip常见的一些功能 1.突破自身ip访问限制,现在有许多的网站都对ip地址访问进行了限制,这时则可以通过代理ip来突破限制,让自己进入网站. 2 ...

  2. python爬取国内代理ip_【python】国内高匿代理爬取,并验证代理ip有效性

    运行环境:python 3.7.3 所需库: 1. requests 2. lxml 3. time 4. multiprocessing 5. sys 目的:构建自己的代理ip池,针对封ip型反爬虫 ...

  3. 测试代理IP有效性的几种方式-芝麻ip

    通常我们用的IP代理都是付费购买的,因为免费的IP代理有效性特别低,可用率也不高,而且使用之前需要检查IP地址是否可用,因此要如何检查IP代理是否有效呢?下面介绍几种检查IP代理有效性的方式. 1.T ...

  4. 获取免费代理IP,并检验IP有效性

    爬虫程序访问网站,速度很快,很容易突破网站设置的访问次数,此情况下就会被停止访问,或者IP被封.如果此时能有一些代理IP,切换不同的代理IP去访问网站,使网站以为是从不同的机器上访问的,那么代理IP背 ...

  5. 从零开始构建自己的爬虫代理IP数据库并定期检验IP有效性...

    ProxyIPPool 从零开始构建自己的代理IP池:根据代理IP网址抓取新的代理IP:对历史代理IP有效性验证 源码地址:https://github.com/TOMO-CAT/ProxyIPPoo ...

  6. Python每日一练(24)-requests 模块获取免费的代理并检测代理 IP 是否有效

    目录 1. 通过代理服务发送请求 2. 获取免费的代理 IP 3. 检测代理 IP 是否有效 1. 通过代理服务发送请求 在爬取网页的过程中,经常会出现不久前可以爬取的网页现在无法爬取的情况,这是因为 ...

  7. 测试代理ip是否有效

    (1)免费ip使用地址:www.xicidaili.com (2)编写脚本测试ip是否有效 推荐大家看一下这个博客:https://blog.csdn.net/Oscer2016/article/de ...

  8. python爬取高匿代理IP(再也不用担心会进小黑屋了)

    一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...

  9. Python 抓取可用代理IP

    问题描述 在做数据抓取的时候,经常会碰到有些网站对同一IP的访问频率做限制.遇到这种情况一般只有两种解决方案: 降低抓取频率.这种方法在数据变化不频繁,数据量不大的情况下还好,但是,如果数据变化频繁或 ...

最新文章

  1. numpy高级操作,求高维矩阵的距离矩阵(方阵)以及 求某一个维度的累加和 , 矩阵切片操作
  2. elk-Logstash
  3. 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
  4. .tar.bz2文件解压命令
  5. Mac笔记本安装Webstrom
  6. nginx导致的session丢失的解决方法
  7. Silverlight:纠结的快捷键问题
  8. Abp框架 Abp中使用Redis
  9. python可视化拖拽编程平台_PythonEditor可视化拼插编辑器:编程不用写代码,拖拖拽拽就可以!...
  10. 微信小程序优购商城项目总结
  11. 如何成为一个具有批判性思维的人?
  12. [Unity特效]使用Projector投影仪来制作角色脚下的特效圆环以及技能指示器skill indicator
  13. 英文标题首字母大写规则
  14. Android 2 时代到来了,敢为天下先是我等求知若渴的程序员的优秀品质
  15. Google Guava Striped 实现细粒度锁
  16. 计算机毕业设计(2)python毕设作品之旅游景点景区售票系统
  17. 关于爱国者***的追踪报道[转]
  18. 使用PyTorch进行知识蒸馏的代码示例
  19. 几个不错的英语学习网站
  20. 宅在家的这几天,突然收到(余额宝)视频面试,四面成功拿下offer

热门文章

  1. 柯西分布——正态分布的兄弟
  2. 关闭微信内置浏览器页面
  3. 项目总结 :木门app(2015.4.10 —— 2015.5.8)
  4. 视频教程-excel提高效率的实用技巧-Office/WPS
  5. 做好产品需求文档的这十步
  6. python的输入函数是什么意思_在Python中,用于获取用户输入的函数是
  7. 建网站如何选择适合自己的云服务器配置?(详细解答)
  8. Burp Suite抓包讲解
  9. 数据挖掘-决策树算法的R实现
  10. 主机计算机怎么打开共享,steam怎么开家庭共享方式