python爬虫设置代理ip池_图文教程
Python网络爬虫的反爬虫机制与绕过方法

Python网络爬虫的反爬虫机制与绕过方法在互联网时代,信息的快速获取对于各行各业都具有重要意义。
Python作为一种强大且灵活的编程语言,被广泛应用于网络爬虫的开发领域。
然而,随着网站所有者对于大规模数据爬取的限制加强,爬虫面临越来越多的反爬虫机制。
本文将介绍Python网络爬虫常见的反爬虫机制以及相应的绕过方法。
一、IP限制为了限制爬虫对网站的频繁请求,许多网站采用IP限制措施。
通过监测访问IP的频率、访问时间间隔等方式,网站可以判断某个IP是否为爬虫,并对其进行限制。
为了绕过IP限制,可以采取以下方法:1. 使用代理IP:通过使用代理服务器进行访问,可以隐藏真实的IP 地址,从而规避IP限制。
Python中有许多开源库可以帮助我们实现代理IP的使用,如requests、urllib等。
2. 随机切换IP:通过频繁切换IP地址,使得爬虫的访问模式更像是正常用户的行为。
可以使用IP池等技术来实现IP的随机切换。
二、User-Agent限制除了IP限制外,许多网站还会通过User-Agent来判断请求是否为爬虫。
User-Agent是一个HTTP请求头字段,用于标识请求的用户代理软件。
为了绕过User-Agent限制,可以采取以下方法:1. 伪装User-Agent:在进行网络请求时,将User-Agent设置为浏览器的User-Agent,使得请求看起来像是由浏览器发起的。
可以使用Python中的库,如faker等,来生成各种浏览器的User-Agent。
2. 随机切换User-Agent:通过定期更换User-Agent,使得爬虫请求的User-Agent不断变化,从而降低被识别为爬虫的概率。
三、验证码许多网站为了防止爬虫爬取敏感信息,会在登录或重要操作时添加验证码。
验证码是为了识别当前请求是否为人类操作的一种手段。
对于爬虫来说,识别和绕过验证码是一项较为困难的任务。
以下是一些绕过验证码的方法:1. 使用打码平台:可以借助第三方的打码平台,通过将验证码图片上传给平台进行识别,然后获取识别结果,并提交给目标网站。
selenium设置proxy、...

selenium设置proxy、...本⽂介绍了selenium设置proxy、headers的⽅法,把phantomjs、Chrome、Firefox⼏个浏览器的设置⽅法都总结⼀下,分享给⼤家,也给⾃⼰留个笔记phantomjs设置ip⽅法1:service_args = ['--proxy=%s' % ip_html, # 代理 IP:prot (eg:192.168.0.28:808)'--proxy-type=http', # 代理类型:http/https‘--load-images=no', # 关闭图⽚加载(可选)'--disk-cache=yes', # 开启缓存(可选)'--ignore-ssl-errors=true' # 忽略https错误(可选)]driver = webdriver.PhantomJS(service_args=service_args)⽅法2:browser=webdriver.PhantomJS(PATH_PHANTOMJS)# 利⽤DesiredCapabilities(代理设置)参数值,重新打开⼀个sessionId,我看意思就相当于浏览器清空缓存后,加上代理重新访问⼀次urlproxy=webdriver.Proxy()proxy.proxy_type=ProxyType.MANUALproxy.http_proxy='1.9.171.51:800'# 将代理设置添加到webdriver.DesiredCapabilities.PHANTOMJS中proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS)browser.get('/ic.asp')print('1: ',browser.session_id)print('2: ',browser.page_source)print('3: ',browser.get_cookies())还原为系统代理# 还原为系统代理proxy=webdriver.Proxy()proxy.proxy_type=ProxyType.DIRECTproxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS)browser.get('/ic.asp')设置请求头⽅法2import random,requests,jsonfrom selenium import webdriverfrom mon.desired_capabilities import DesiredCapabilitiesfrom mon.proxy import ProxyType#随机获取⼀个ipdef proxies():r = requests.get("http://120.26.166.214:9840/JProxy/update/proxy/scoreproxy")rr = json.loads(r.text)hh = rr['ip'] + ":" + "8907"print(hh)return hhips =proxies()#设置phantomjs请求头和代理⽅法⼀:#-------------------------------------------------------------------------------------# 设置代理service_args = ['--proxy=%s' % ips, # 代理 IP:prot (eg:192.168.0.28:808)'--ssl-protocol=any', #忽略ssl协议'--load - images = no', # 关闭图⽚加载(可选)'--disk-cache=yes', # 开启缓存(可选)'--ignore-ssl-errors=true' # 忽略https错误(可选)]#设置请求头user_agent = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) " +"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36")dcap = dict(DesiredCapabilities.PHANTOMJS)dcap["erAgent"] = user_agentdriver = webdriver.PhantomJS(executable_path=r"C:\soft\phantomjs-2.1.1-windows\bin\phantomjs.exe",desired_capabilities=dcap,service_args=service_args)driver.get(url='')page=driver.page_sourceprint(page)#设置phantomjs请求头和代理⽅法⼆:#-------------------------------------------------------------------------------------desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()# 从USER_AGENTS列表中随机选⼀个浏览器头,伪装浏览器desired_capabilities["erAgent"] = (random.choice('请求头池'))# 不载⼊图⽚,爬页⾯速度会快很多desired_capabilities["phantomjs.page.settings.loadImages"] = False# 利⽤DesiredCapabilities(代理设置)参数值,重新打开⼀个sessionId,我看意思就相当于浏览器清空缓存后,加上代理重新访问⼀次url proxy = webdriver.Proxy()proxy.proxy_type = ProxyType.MANUALproxy.http_proxy = random.choice('ip池')proxy.add_to_capabilities(desired_capabilities)phantomjs_driver = r'C:\phantomjs-2.1.1-windows\bin\phantomjs.exe'# 打开带配置信息的phantomJS浏览器driver = webdriver.PhantomJS(executable_path=phantomjs_driver,desired_capabilities=desired_capabilities)driver.start_session(desired_capabilities)driver.get(url='')page=driver.page_sourceprint(page)# 隐式等待5秒,可以⾃⼰调节driver.implicitly_wait(5)# 设置10秒页⾯超时返回,类似于requests.get()的timeout选项,driver.get()没有timeout选项# 以前遇到过driver.get(url)⼀直不返回,但也不报错的问题,这时程序会卡住,设置超时选项能解决这个问题。
Python爬虫实战教学

Python爬虫实战教学第一章:爬虫基础知识Python爬虫是一种自动爬取网站信息的技术,可以用来获取大量数据。
在进行Python爬虫实战前,我们首先需要了解一些基础知识。
1.1 爬虫的原理爬虫的原理是通过发送HTTP请求到目标网站,然后解析网页获取所需的信息。
可以使用Python的第三方库,如Requests库来发送HTTP请求,并使用正则表达式或者解析库(如BeautifulSoup、XPath等)来解析网页。
1.2 HTTP请求与响应在Python中,我们可以使用Requests库发送HTTP请求,并获取响应内容。
可以设置请求头、请求体、代理IP等信息,以模拟浏览器的行为。
1.3 网页解析网页解析是爬虫的核心部分,常用的解析方法有正则表达式、BeautifulSoup、XPath等。
使用这些方法可以从网页中提取出所需的信息。
这些解析方法各有特点,根据不同的场景选择合适的方法。
第二章:爬虫实战准备在进行爬虫实战之前,我们需要做一些准备工作。
2.1 安装Python和相关库首先,我们需要安装Python,并安装相关的第三方库,如Requests、BeautifulSoup等。
可以使用pip命令来安装这些库。
2.2 确定爬取目标在进行爬虫实战之前,我们需要明确我们要爬取的目标,确定目标网站的URL和需要提取的信息。
2.3 分析网页在确定目标网站后,我们需要分析网页的结构,找出目标信息所在的位置、标签等。
可以使用浏览器的开发者工具来分析网页。
第三章:实战案例一——爬取天气信息3.1 网页分析首先,我们需要分析天气网站的网页结构,找出所需的天气信息所在的位置。
可以使用浏览器的开发者工具来分析。
3.2 发送HTTP请求使用Requests库发送HTTP请求到天气网站,并获取响应内容。
3.3 解析网页使用解析库(如BeautifulSoup)来解析网页,提取出所需的天气信息。
3.4 数据处理与存储对提取出的天气信息进行数据处理(如去除空白字符、转换格式等),并将数据保存到本地文件或者数据库。
Python异步爬虫requests和aiohttp中代理IP的使用

Python异步爬⾍requests和aiohttp中代理IP的使⽤爬⾍要想爬的好,IP代理少不了。
现在⽹站基本都有些反爬措施,访问速度稍微快点,就会发现IP被封,不然就是提交验证。
下⾯就两种常⽤的模块来讲⼀下代理IP的使⽤⽅式。
话不多说,直接开始。
requests中代理IP的使⽤:requests中使⽤代理IP只需要添加⼀个proxies参数即可。
proxies的参数值是⼀个字典,key是代理协议(http/https),value就是ip和端⼝号,具体格式如下。
try:response = requests.get('https:///ip', headers=headers,proxies={'https':'https://221.122.91.74:9401'}, timeout=6)print('success')# 检测代理IP是否使⽤成功# 第⼀种⽅式,返回发送请求的IP地址,使⽤时要在 get() 添加 stream = True# print(response.raw._connection.sock.getpeername()[0])# 第⼆种⽅式,直接返回测试⽹站的响应数据的内容print(response.text)except Exception as e:print('error',e)注意:peoxies的key值(http/https)要和url⼀致,不然会直接使⽤本机IP直接访问。
aiohttp中代理IP的使⽤:由于requests模块不⽀持异步,迫不得已使⽤aiohttp,掉了不少坑。
它的使⽤⽅式和requests相似,也是在get()⽅法中添加⼀个参数,但此时的参数名为proxy,参数值是字符串,且字符串中的代理协议,只⽀持http,写成https会报错。
这⾥记录⼀下我的纠错历程。
Python使用代理的方法

Python使⽤代理的⽅法我们在做爬⾍的过程中经常会遇到这样的情况:最初爬⾍正常运⾏,正常抓取数据,⼀切看起来都是那么的美好,然⽽⼀杯茶的功夫可能就会出现错误,⽐如403 Forbidden;出现这样的原因往往是⽹站采取了⼀些反爬⾍的措施,⽐如,服务器会检测某个IP在单位时间内的请求次数,如果超过了某个阈值,那么服务器会直接拒绝服务,返回⼀些错误信息。
这时候,代理就派上⽤场了。
国内的免费代理⽹站:接下来看如何设置代理:urllib代理设置:from urllib.error import URLErrorfrom urllib.request import ProxyHandler,build_openerproxy='123.58.10.36:8080'#使⽤本地代理#proxy='username:password@123.58.10.36:8080' #购买代理proxy_handler=ProxyHandler({'http':'http://'+proxy,'https':'https://'+proxy})opener=build_opener(proxy_handler)try:response=opener.open('/get') #测试ip的⽹址print(response.read().decode('utf-8'))except URLError as e:print(e.reason)运⾏结果如下:requests代理设置:import requestsproxy='123.58.10.36:8080'#本地代理#proxy='username:password@123.58.10.36:8080'proxies={'http':'http://'+proxy,'https':'https://'+proxy}try:response=requests.get('/get',proxies=proxies)print(response.text)except requests.exceptions.ConnectionError as e:print('错误:',e.args)运⾏结果如下:Selenium代理设置:from selenium import webdriverproxy='123.58.10.36:8080'chrome_options=webdriver.ChromeOptions()chrome_options.add_argument('--proxy-server=http://'+proxy)browser=webdriver.Chrome(chrome_options=chrome_options)browser.get('/get')运⾏结果:以上就是代理的⼀些简单设置、、、。
Python网络爬虫技术 第1章 Python爬虫环境与爬虫介绍

大数据挖掘专家
30
配置MySQL数据库
1. Windows下MySQL配置
➢ 设置MySQL的环境变量:第二种设置环境变量的方法。 • 直接在“Path”变量中添加“C:\Program Files\MySQL\MySQL Server 5.6\bin”。
大数据挖掘专家
31
配置MySQL数据库
1. Windows下MySQL配置
4
小结
大数据挖掘专家
17
Python爬虫相关库介绍与配置
Python爬虫相关库
目前Python有着形形色色的爬虫相关库,按照库的功能,整理如下。
类型
通用
框架 HTML/XML
解析器
库名
简介
urllib
Python内置的HTTP请求库,提供一系列用于操作URL的功能
requests
基于urllib,采用Apache2 Licensed开源协议的HTTP库
离,距离越近的页面中的链接优先访问。
大数据挖掘专家
5
爬虫的原理
3. 增量式网络爬虫
增量式网络爬虫只对已下载网页采取增量式更新或只爬行新产生的及已经发生变化的网页,需要通过重新访 问网页对本地页面进行更新,从而保持本地集中存储的页面为最新页面。 常用的更新方法如下。 ➢ 统一更新法:以相同的频率访问所有网页,不受网页本身的改变频率的影响。 ➢ 个体更新法:根据个体网页的改变频率来决定重新访问各页面的频率。 ➢ 基于分类的更新法:爬虫按照网页变化频率分为更新较快和更新较慢的网页类别,分别设定不同的频率来
访问这两类网页。
大数据挖掘专家
6
爬虫的原理
4. 深层网络爬虫
Web页面按照存在方式可以分为表层页面和深层页面两类。表层页面指以传统搜索引擎可以索引到的页面,深 层页面为大部分内容无法通过静态链接获取,隐藏在搜索表单后的,需要用户提交关键词后才能获得的Web页 面。 深层爬虫的核心部分为表单填写,包含以下两种类型。 ➢ 基于领域知识的表单填写:该种方法一般会维持一个本体库,通过语义分析来选取合适的关键词填写表单。 ➢ 基于网页结构分析的表单填写:这种方法一般无领域知识或仅有有限的领域知识,将HTML网页表示为DOM
Python爬虫基础课件(PPT版)

基于Scrapy框架的网站爬虫实例
Scrapy框架介绍
爬虫实例
学习使用Scrapy框架构建Python 爬虫系统的基本概念和使用方法。
分享一些使用Scrapy框架构建的 实际爬虫项目的案例和经验。
数据抓取效果
展示使用Scrapy框架进行网站数 据抓取的实际效果和成果。
了解常见的爬虫错误和异常, 并学习如何处理和避免它们。
3 最佳实践
分享一些爬虫性能优化和错误处理的最佳实践和技巧。
持续学习与社区分享
探讨如何在Python爬虫领域持续学习和改进自己的技能,并与社区分享经验和知识。
常见爬虫面试题及解答技巧
解答一些常见的Python爬虫面试题,并分享解答技巧和策略。
数据分析案例
分享一些实践案例,如新闻抓取、 价格监测和社交媒体数据分析。
展示一些实际项目中使用Python 爬虫进行数据提取的案例和应用。
介绍一些使用爬虫获取数据并进 行数据分析的实践案例。
爬虫性能优化和错误处理方法
1 性能优化
学习如何优化爬虫的性能, 包括并发请求、异步爬取和 缓存技术。
2 错误处理
介绍如何构建分布式爬虫系统,包括任务调度、数 据同步和通信机制。
数据清洗和预处理方法
数据清洗
学习如何清理和处理爬虫获取的原始数据,如 去除重复项和处理缺失值。
数据预处理
介绍常见的数据预处理方法,如数据规范化和 特征选择。
爬虫数据的可视化分析和展示
1 可视化工具
探索用于可视化爬虫数据 的常用工具和库,如 Matplotlib和Seaborn。
2 数据on进行数据分析, 包括数据聚合、统计分析 和生成可视化图表。
分享一些使用可视化工具 分析爬虫数据的实际案例。
Python网络爬虫实践教程

Python网络爬虫实践教程一、什么是网络爬虫网络爬虫,也称为网络蜘蛛或网络机器人,是一种自动获取互联网信息的程序工具。
通过模拟浏览器行为,爬虫程序可以访问网页、提取网页中的数据,在大规模数据采集、搜索引擎、数据分析等领域发挥着重要作用。
二、网络爬虫的基本原理网络爬虫的基本原理是通过发送HTTP请求,并解析响应得到的HTML文档来获取网页数据。
首先,我们需要使用Python中的requests库发送网络请求,并获得服务器的响应。
然后,通过解析HTML文档,提取出我们需要的数据。
三、准备工作在开始编写网络爬虫之前,我们需要安装Python以及相关的库。
首先,需要安装Python解释器和pip包管理工具。
然后,使用pip安装requests、beautifulsoup和lxml等库。
四、发送HTTP请求在编写爬虫程序之前,我们需要了解如何使用Python发送HTTP请求。
使用requests库发送GET请求非常简单,只需要调用get方法,并提供目标网址即可。
如果需要发送POST请求,同样使用post方法,并在参数中传递需要提交的数据。
五、解析HTML文档解析HTML文档是爬虫中非常重要的一步。
Python提供了多种解析HTML的库,其中比较常用的是beautifulsoup和lxml。
通过指定解析器,我们可以轻松地提取出HTML文档中的各个元素,并进行进一步的处理。
六、处理反爬机制为了阻止爬虫程序的访问,许多网站采取了反爬机制,例如设置验证码、限制IP访问频率等。
对于这些反爬措施,我们可以通过使用代理IP、设置请求头信息、使用验证码识别技术等方法来绕过。
七、数据存储与分析在爬虫过程中,我们通常需要将获取的数据进行存储和分析。
常用的数据存储方式包括将数据保存到数据库、文本文件、Excel 表格或者CSV文件中。
而要对数据进行分析,可以使用Python中的数据分析库,如pandas、numpy等。
八、实践案例:爬取豆瓣电影数据为了更好地理解网络爬虫的实践过程,我们以爬取豆瓣电影数据为例进行讲解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
python爬虫设置代理ip池_图文教程
前言
随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,做过爬虫的想必都深有体会,爬取的时候莫名其妙IP 就被网站封掉了,毕竟各大网站也不想自己的数据被轻易地爬走。
对于爬虫来说,为了解决封禁IP 的问题,一个有效的方式就是使用代理,使用代理之后可以让爬虫伪装自己的真实IP,如果使用大量的随机的代理进行爬取,那么网站就不知道是我们的爬虫一直在爬取了,这样就有效地解决了反爬的问题。
那么问题来了,使用什么代理好呢?这里指的代理一般是HTTP 代理,主要用于数据爬取。
现在打开搜索引擎一搜HTTP 代理,免费的、付费的太多太多品牌,我们该如何选择呢?看完这一篇文章,想必你心中就有了答案。
对于免费代理,其实想都不用想了,可用率能超过10% 就已经是谢天谢地了。
真正靠谱的代理还是需要花钱买的,那这么多家到底哪家可用率高?哪家响应速度快?哪家比较稳定?哪家性价比比较高?为此,我对市面上比较流行的多家付费代理针对可用率、爬取速度、爬取稳定性、价格、安全性、请求限制等做了详细的评测,让我们来一起看一下到底哪家更强!
测评目标:618IP代理。
选择这家做为评测对象
本次测评主要分析代理的可用率、响应速度、稳定性、价格、安全性、使用频率等因素,下面我们来一一进行说明。
可用率
可用率就是提取的这些代理中可以正常使用的比率。
假如我们无法使用这个代理请求某个网站或者访问超时,那么就代表这个代理不可用,在这里我的测试样本大小为500,即提取500 个代理,看看里面可用的比率多少。
响应速度
响应速度可以用耗费时间来衡量,即计算使用这个代理请求网站一直到得到响应所耗费的时间。
时间越短,证明代理的响应速度越快,这里同样是500 个样本,计算时只对正常可用的代理做统计,计算耗费时间的平均值。
稳定性
由于爬虫时我们需要使用大量代理,如果一个代理响应速度特别快,很快就能得到响应,而下一次请求使用的代理响应速度特别慢,等了三十秒才得到响应,那势必会影响爬取效率,所以我们需要看下商家提供的这些代理稳定性怎样,总不能这一个特别快,下一个又慢的不行。
所以这里我们需要统计一下耗费时间的方差,方差越大,证明稳定性越差。
价格
价格,这个当然是需要考虑的内容,如果一个代理不论是响应速度还是稳定性都特别不错,但是价格非常非常高,这也是不可接受的。
安全性
这的确也是需要考虑的因素,比如一旦不小心把代理提取的API 泄露出去了,别人就肆意使用我们的API 提取代理使用,而一直耗费的是我们的套餐。
另外一旦别人通过某些手段获取了我们的代理列表,而这些代理是没有安全验证的,这也会导致别人偷偷使用我们的代理。
在生产环境上,这方面尤其需要注意。
使用频率
有些代理套餐在API 调用提取代理时有频率限制,有的代理套餐则会限制请求频率,这些因素都会或多或少影响爬虫的效率,这部分因素我们也需要考虑进来。
测评标准
要做标准的测评,那就必须在标准的测评环境下进行,且尽可能排除一些杂项的干扰,如网络波动、传输延迟等一系列的影响。
主机选取
由于我的个人笔记本是使用WiFi 上网的,所以可能会有网络波动,而且实际带宽其实并不太好把控,因此它并不适合来做标准评测使用。
评测需要在一个网络稳定的条件下进行,而且多个代理的评测环境必须相同,在此我选择了一台腾讯云主机作为测试,主机配置如下:
这样我们就可以保证一个标准统一的测试环境了。
现取现测
另外在评测时还需要遵循一个原则,那就是现取现测,即取一个测一个。
现在很多付费代理网站都提供了API 接口,我们可以一次性提取多个代理,但是这样会导致一个问题,每个代理在提取出来的时候,商家是会尽量保证它的可用性的,但过一段时间,这个代理可能就不好用了,所以假如我们一次性提取出来了100 个代理,但是这100 个代理并没有同时参与测试,后面的代理就会经历一个的等待期,过一段时间再测这些代理的话,肯定会影响后半部分代理的有效性,所以这里我们将提取的数量统一设置成1,即请求一次接口获取一个代理,然后立即进行测试,这样可以保证测试的公平性,排除了不同代理有效期的干扰。
时间计算
由于我们有一项是测试代理的响应速度,所以我们需要计算程序请求之前和得到响应之后的时间差,这里我们使用的测试Python 库是requests,所以我们就计算发起请求和得到响应之间的时间差即可,时间计算方法如下所示:
这里used_time 就是使用代理请求的耗时,这样测试的就仅仅是发起请求到得到响应的时间。
测试链接
测试时我们也需要使用一个稳定的且没有反爬虫的链接,这样可以排除服务器的干扰,这里我们使用百度来作为测试目标。
超时限制
在测试时免不了的会遇到代理请求超时的问题,所以这里我们也需要统一一个超时时间,这里设置为60 秒,如果使用代理请求百度,60 秒还没有得到响应,那就视为该代理无效。
测试数量
要做测评,那么样本不能太小,如只有十几次测试是不能轻易下结论的,这里我选取了一个适中的测评数量500,即每个套餐获取500 个代理进行测试。
测评过程
嗯,测评过程这边主要说一下测评的代码逻辑,首先测的时候是取一个测一个的,所以这里定义了一个test_proxy() 方法:
这里需要传入一个参数proxy,代表一个代理,即IP 加端口组成的代理,然后这里使用了requests 的proxies 参数传递给get() 方法。
对于代理无效的检测,这里判断了ProxyError, ConnectTimeout, SSLError, ReadTimeout, ConnectionError 这几种异常,如果发生了这些异常统统视为代理无效,返回错误。
如果在timeout 60 秒内得到了响应,那么就计算其耗费时间并返回。
在主程序里,就是获取API 然后统计结果了,代码如下:
这里加了一些判断,如is_proxy() 方法判断了获取的是不是符合有效的代理规则,即判断它是不是IP 加端口的形式,这样可以排除API 返回一些错误信息的干扰。
另外这里设置了total_count 和valid_count 变量,只有符合代理规则的代理参与了测试,这样才算一次有效测试,total_count 加一,如果测试可用,那么valid_count 加一并记录耗费时间。
最后调用了stats_results 方法进行了统计:
这里使用了Numpy 来统计了耗费时间的均值和方差,分别反映代理的响应速度和稳定性。
嗯,就这样,利用这个方法我对各个不同的代理套餐逐一进行了测试。
最好结果:
通过可用率响应速度稳定性价格安全性统计,我们可以发现这个是非常不错的,推荐指数100%,不许你买到不好的东西。