Python爬虫-付费代理推荐和使用

付费代理的使用

相对免费代理来说,付费代理的稳定性更高。本节将介绍爬虫付费代理的相关使用过程。

1. 付费代理分类

付费代理分为两类:

  • 一类提供接口获取海量代理,按天或者按量收费,如讯代理。

  • 一类搭建了代理隧道,直接设置固定域名代理,如阿布云代理。

本节分别以两家代表性的代理网站为例,讲解这两类代理的使用方法。

2. 讯代理

讯代理的代理效率较高,官网为 http://www.xdaili.cn/,如图。

讯代理上可供选购的代理有多种类别,包括如下几种(参考官网介绍)。

  • 优质代理: 适合对代理 IP 需求量非常大,但能接受代理有效时长较短(10~30 分钟),小部分不稳定的客户

  • 独享动态: 适合对代理 IP 稳定性要求非常高,且可以自主控制的客户,支持地区筛选。

  • 独享秒切: 适合对代理 IP 稳定性要求非常高,且可以自主控制的客户,快速获取 IP,地区随机分配

  • 动态混拨: 适合对代理 IP 需求量大,代理 IP 使用时效短(3 分钟),切换快的客户

  • 优质定制: 如果优质代理的套餐不能满足您的需求,请使用定制服务

一般选择第一类别优质代理即可,这种代理的量比较大,但是其稳定性不高,一些代理不可用。所以这种代理的使用就需要借助于上一节所说的代理池,自己再做一次筛选,以确保代理可用。

读者可以购买一天时长来试试效果。购买之后,讯代理会提供一个 API 来提取代理。

比如在这里我的提取 API 为:http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a&orderno=YZ20177140586mTTnd7&returnType=2&count=20,可能已过期,在此仅做演示。

在这里指定了提取数量为 20,提取格式为 JSON,直接访问链接即可提取代理。

接下来我们要做的就是解析这个 JSON,然后将其放入代理池中。

如果信赖讯代理的话,我们也可以不做代理池筛选,直接使用代理。不过我个人还是推荐使用代理池筛选,以提高代理可用概率。

根据上一节代理池的写法,我们只需要在 Crawler 中再加入一个 crawl 开头的方法即可。方法实现如下所示:

def crawl_xdaili(self):
        """
        获取讯代理
        :return: 代理
        """
        url = 'http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a&orderno=YZ20177140586mTTnd7&returnType=2&count=20'
        html = get_page(url)
        if html:
            result = json.loads(html)
            proxies = result.get('RESULT')
            for proxy in proxies:
                yield proxy.get('ip') + ':' + proxy.get('port')

这样我们就在代理池中接入了讯代理。获取讯代理的结果之后,解析 JSON,返回代理即可。

代理池运行之后就会抓取和检测该接口返回的代理,如果代理可用,那么分数就会被设为 100,通过代理池接口即可获取到这些可用代理。

3. 阿布云代理

阿布云代理提供了代理隧道,代理速度快且非常稳定,其官网为 阿布云 - 为大数据赋能 。

阿布云代理主要分为两种:专业版和动态版,另外还有定制版(参考官网介绍)。

  • 专业版,多个请求锁定一个代理 IP,海量 IP 资源池需求,近 300 个区域全覆盖,代理 IP 可连续使用 1 分钟,适用于请求 IP 连续型业务

  • 动态版,每个请求一个随机代理 IP,海量 IP 资源池需求,近 300 个区域全覆盖,适用于爬虫类业务

  • 定制版,灵活按照需求定制,定制 IP 区域,定制 IP 使用时长,定制 IP 每秒请求数

关于专业版和动态版的更多介绍可以查看官网:动态版HTTP隧道服务说明 | 阿布云 - 为大数据赋能。

对于爬虫来说,我们推荐使用动态版,购买之后可以在后台看到代理隧道的用户名和密码。

整个代理的连接域名为 proxy.abuyun.com,端口为 9020,它们均是固定的,但是每次使用之后 IP 都会更改,该过程其实就是利用了代理隧道实现(参考官网介绍)。

其官网原理介绍如下:

  • 云代理通过代理隧道的形式提供高匿名代理服务,支持 HTTP/HTTPS 协议。

  • 云代理在云端维护一个全局 IP 池供代理隧道使用,池中的 IP 会不间断更新,以保证同一时刻 IP 池中有几十到几百个可用代理 IP。

  • 需要注意的是代理 IP 池中有部分 IP 可能会在当天重复出现多次。

  • 动态版 HTTP 代理隧道会为每个请求从 IP 池中挑选一个随机代理 IP。

  • 无须切换代理 IP,每一个请求一个随机代理 IP。

  • HTTP 代理隧道有并发请求限制,默认每秒只允许 5 个请求。如果需要更多请求数,请额外购买。

注意,默认套餐的并发请求是 5 个。如果需要更多请求数,则须另外购买。

使用教程的官网链接为:HTTP隧道(动态版)Python 接入指南| 阿布云 - 为大数据赋能。教程提供了 requests、urllib、Scrapy 的接入方式。

现在我们以 requests 为例,接入代码如下所示:

import requests
​
url = 'http://httpbin.org/get'
​
# 代理服务器
proxy_host = 'proxy.abuyun.com'
proxy_port = '9020'
​
# 代理隧道验证信息
proxy_user = 'H01234567890123D'
proxy_pass = '0123456789012345'
​
proxy_meta = 'http://%(user) s:%(pass) s@%(host) s:%(port) s' % {
    'host': proxy_host,
    'port': proxy_port,
    'user': proxy_user,
    'pass': proxy_pass,
}
proxies = {
    'http': proxy_meta,
    'https': proxy_meta,
}
response = requests.get(url, proxies=proxies)
print(response.status_code)
print(response.text)

在这里其实就是使用了代理认证,在前面我们也提到过类似的设置方法,运行结果如下:

200
{"args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.1"
  }, 
  "origin": "60.207.237.111", 
  "url": "http://httpbin.org/get"
}

输出结果的 origin 即为代理 IP 的实际地址。这段代码可以多次运行测试,我们发现每次请求 origin 都会在变化,这就是动态版代理的效果。

这种效果其实跟之前的代理池的随机代理效果类似,都是随机取出了一个当前可用代理。但是,与维护代理池相比,此服务的配置简单,使用更加方便,更省时省力。在价格可以接受的情况下,个人推荐此种代理。

4. 结语

以上内容便是付费代理的相关使用方法,付费代理稳定性比免费代理更高。读者可以自行选购合适的代理。

最后,如果本文对您有帮助,可以给我点一个赞支持一下!

同时,如果你喜欢本系列爬虫文章,可以点个关注跟着我一起学习更多爬虫知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/410939.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一元函数微分学——刷题(22

目录 1.题目:2.解题思路和步骤:3.总结:小结: 1.题目: 2.解题思路和步骤: 由于是极坐标方程,所以这个式子一定成立: 然后代入r即可变为参数方程的求导: 3.总结&#xff…

52.仿简道云公式函数实战-文本函数-LEFT

1. LEFT函数 从一个文本字符串的第一个字符开始返回指定个数的字符。 2. 函数用法 LEFT(text,[num_chars]) 3. 函数示例 从一个文本字符串的第一个字符开始返回指定个数的字符。 4. 代码实战 首先我们在function包下创建text包,在text包下创建LeftFunction类…

POST参数里加号+变成空格的问题处理

今天遇到个这样的问题,从前端传到后端的加密报文,里面包含了号,但在后端日志输出看出,变成空格。这个是由于经过RSA加密后引起的 解决办法: 1.前端转码:使用encodeURIComponent对参数进行转码 2.后端解码…

msvcp110.dll找不到的处理方法,一键修复msvcp110.dll文件

如果你遭遇到了“msvcp110.dll文件丢失”的现象,那就要引起足够的重视,因为这通常意味着你的电脑上某些依赖此DLL文件的应用程序将无法正常启动。msvcp110.dll是许多软件中必须的组件,一旦发生丢失,影响的不仅是单个程序&#xff…

Java SpringBoot 整合 MyBatis 小案例

Java SpringBoot 整合 MyBatis 小案例 基础配置&#xff08;注意版本号&#xff0c;容易报错&#xff09; pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

武汉灰京文化:中国手游行业新技术的涌现与产业链的完善

中国手游行业正迎来新技术的涌现&#xff0c;如虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;和人工智能&#xff08;AI&#xff09;。这些技术为游戏提供了全新的可能性&#xff0c;扩展了游戏的玩法和体验。例如&#xff0c;VR技术可以让玩家沉浸…

卖家横扫海外露营市场的机会来了,赛盈分销预测2024年消费者新需求

甲辰龙年开篇&#xff0c;就要迎来国外野营浪潮了&#xff0c;希望点开这篇推送的你&#xff0c;红红火火、热辣滚烫一整年。每年的3月份&#xff0c;海外用户对露营设备的搜索开始迅速增长。今天和大家聊聊露营市场出海的一些布局方向。 全球露营商品的市场规模愈发壮大&#…

Maven jar 的查找及依赖版本确定

关于 jar 的查找&#xff0c;及使用版本的确定&#xff0c;及依赖的版本确认&#xff0c;避免 jar 冲突或版本不兼容 在使用 maven 构建项目时&#xff0c;需要的 jar 可以通过在 https://mvnrepository.com/ 可以找到部分需要的依赖&#xff0c;这里以查找 mybatis 依赖为例&…

再次委托|工科背景老师赴美国斯坦福大学自费访学

工科背景的I老师&#xff0c;几年前曾通过我们获得美国哈佛大学医学院的无薪博士后职位&#xff0c;从事医工交叉学科研究。回国完成2年服务期后&#xff0c;I老师再次委托并仍希望去美国顶尖高校&#xff0c;最终我们落实了世界名校斯坦福大学的访问学者职位&#xff0c;满足了…

微信小程序自制动态导航栏

写在前面 关于微信小程序导航栏的问题以及解决办法我已经在先前的文章中有提到&#xff0c;点击下面的链接即可跳转~ &#x1f90f;微信小程序自定义的导航栏&#x1f90f; 在这篇文章中我们需要做一个这样的导航栏&#xff01;先上效果图 &#x1f447;&#x1f447;&#x1f…

HTTP/HTTPS协议

什么是HTTP协议 HTTP被称为超文本传输协议(里面不仅仅可以是字符串,还可以是图片,特殊字符等),这是一种应用非常广泛的应用层协议. HTTP协议诞生于1991年,现在是最主流使用的一种应用层协议.它从诞生到现在为止迭代了多个版本. 但目前最主流使用的还是HTTP1.1和HTTP2.0. HTTP协…

大学餐厅菜品推荐和点评系统设计与实现

**&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;**一 、设计说明 1.1 研究背景…

Opencv(2)深浅拷贝与基本绘图(c++python

Opencv(2)深浅拷贝与基本绘图 文章目录 Opencv(2)深浅拷贝与基本绘图三、深浅拷贝四、HSV色域(1).意义(2).cvtColor()(3).inRange()(4).适应光线 三、深浅拷贝 浅拷贝是指当图像之间进行赋值时&#xff0c;图像数据并未发生复制&#xff0c;而是两个对象都指向同一块内存块。 …

Amazon Generative AI | 基于 Amazon 扩散模型原理的代码实践之采样篇

以前通过论文介绍 Amazon 生成式 AI 和大语言模型&#xff08;LLMs&#xff09;的主要原理之外&#xff0c;在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾&#xff0c;希望内容可以更加深入。因此&#x…

鲲鹏arm64架构下安装KubeSphere

鲲鹏arm64架构下安装KubeSphere 官方参考文档: https://kubesphere.io/zh/docs/quick-start/minimal-kubesphere-on-k8s/ 在Kubernetes基础上最小化安装 KubeSphere 前提条件 官方参考文档: https://kubesphere.io/zh/docs/installing-on-kubernetes/introduction/prerequi…

【教程】ONLYOFFICE 桌面应用程序 v8.0 版本更新全面解读

文章目录 &#x1f4df; 引言 官网&#xff1a;ONLYOFFICE 官方网站 近日&#xff0c;ONLYOFFICE 桌面应用程序迎来了 v8.0 版本的更新&#xff0c;为用户带来了许多新功能和改进&#xff0c;如全新的 RTL 界面、本地主题、Moodle 集成等。本文将详细介绍 ONLYOFFICE 桌面编辑…

微服务架构中的 隔离和超时控制

文章目录 隔离的应用场景隔离的措施机房隔离实例隔离分组隔离连接池隔离和线程池隔离第三方依赖隔离慢任务隔离 隔离的缺点更多思考 超时控制超时控制目标超时控制形态确定超时时间1、根据用户体验来确定2、根据响应时间来确定3、压力测试4、根据代码计算 超时中断业务更多思考…

QT信号槽实现分析

1.宏定义 qt中引入了MOC来反射&#xff0c;编译阶段变成 MOC–>预处理–>编译–>汇编–>链接 1-1、Q_OBJECT 这个宏定义了一系列代码&#xff0c;包括元对象和处理的函数 #define Q_OBJECT \public: \QT_WARNING_PUSH \Q_OBJECT_NO_OVERRIDE_WARNING \static c…

Python接口自动化测试 —— unittest批量用例管理!

我们日常项目中的接口测试案例肯定不止一个&#xff0c;当案例越来越多时我们如何管理这些批量案例&#xff1f;如何保证案例不重复&#xff1f;如果案例非常多&#xff08;成百上千&#xff0c;甚至更多&#xff09;时如何保证案例执行的效率&#xff1f;如何做&#xff08;批…

git 拉取远程分支到本地

背景&#xff1a; 我的 github 上的远程仓库上除了 main 分支外还提交了好几个别的分支&#xff0c;现在我换机器了&#xff0c;git clone 原仓库后只剩 main 分支&#xff0c;我要把其他分支拉下来到本地。 1. 查看所有远程remote分支 git branch -r 比如我这里&#xff1…