新手网络爬虫利器介绍 之 移动蜂窝网络代理

2024-08-28 14:12

本文主要是介绍新手网络爬虫利器介绍 之 移动蜂窝网络代理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

移动蜂窝代理对接指南

在爬虫与反爬虫的较量愈演愈烈之际,众多网站与应用程序的风控机制不断升级,其中最常见的手段便是 IP 封禁。

要想有效解决 IP 被封的问题,设置代理是一个行之有效的方法。通过代理服务,爬虫可以借助代理的 IP 来掩饰真实的 IP,从而成功突破反爬虫的障碍。

不过,市场上代理的质量参差不齐,特别是那些免费的代理,很多都处于不可用或被封禁的状态。而一些收费的普通代理,随着应用程序和网站的风控措施增强,渐渐也被加入了黑名单。因此,目前可用于高质量数据爬取的代理非常有限,市面上较为优质的类型主要包括独享代理、ADSL 代理以及移动蜂窝代理。

本服务就是基于移动蜂窝网络(4G、5G)的轮换代理服务,接下来将介绍如何申请和使用此服务。

注册试用链接

注册试用链接

移动蜂窝代理

移动蜂窝代理,顾名思义是建立在手机流量基础上的代理服务,所有代理 IP 均为真实的手机 IP。这类代理在爬虫领域的使用相对较少,因此被封禁的风险也比较低,尤其适合于那些风控措施严密的网站和应用。

我们的代理服务是依托于一个大规模的手机群控池构建的,所有数据流量均通过真实的手机流量进行转发,几乎可以支持市场上所有网站和应用的数据请求,代理质量极其优异,大大降低了风控的可能性。

申请方法

想要使用蜂窝代理服务,您可以先前往「申请页面」进行申请,首次申请用户将获得 1 积分的免费额度。

如果您尚未登录,则会自动跳转到登录页面,登录后即可继续申请。

使用方法

申请完成后,您可在「控制台」查看个人申请结果,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击「Credentials」,您将能看到使用蜂窝代理服务所需的用户名和密码,以冒号分隔,用户名为 8 位,密码为 32 位,如图所示:

本移动蜂窝代理是轮换代理,因此只需设置一个固定的代理地址和端口即可,代理地址与端口分别为 cellular.proxy.acedata.cloud 和 30000。本代理支持 HTTP/HTTPS/SOCKS 协议,可用于 HTTP 和 HTTPS 协议的网站请求。

命令测试

在获取到代理的用户名和密码后,最简便的测试方式是通过 curl 命令行工具。如果您尚未安装,可以参考 https://curl.se/ 进行安装。

假设当前代理的用户名密码是 1f78266a:eff0896726224fa2a99fe82dd1f07562,您可以使用以下 curl 命令进行测试:

curl -x 1f78266a:eff0896726224fa2a99fe82dd1f07562@cellular.proxy.acedata.cloud:30000 https://ipinfo.io

这里我们使用 curl 的 -x 参数来指定代理地址,默认协议为 HTTP/HTTPS,请求的 URL 为 https://ipinfo.io,该站点可以返回请求者的真实 IP 地址及其所在地域。

注意:上述的用户名密码可能已经失效,请替换为您自己的用户名和密码。

运行结果如下:

{"ip": "39.144.10.182","city": "Shanghai","region": "Shanghai","country": "CN","loc": "31.2222,121.4581","org": "AS9808 China Mobile Communications Group Co., Ltd.","postal": "200000","timezone": "Asia/Shanghai","readme": "https://ipinfo.io/missingauth"
}

可以看到,返回数据中的 country 为 CN,表示中国,而 org 则为 China Mobile,确认了这是一个来自中国移动的蜂窝代理。

如果再次执行请求,会得到不同的结果,表明每次请求都使用随机的 IP 出口。

代码对接

下面以 Python 示例演示如何设置蜂窝轮换代理:

import requestsproxy = 'http://{proxy_username}:{proxy_password}@cellular.proxy.acedata.cloud:30000'proxies = {'http': proxy,'https': proxy
}for _ in range(3):resp = requests.get('https://ipinfo.io', proxies=proxies)print(resp.text)

这里,我们首先定义了代理的 URL 并将其存储在 proxy 变量中,该协议为 http,后面连接上轮换代理的用户名和密码(控制台显示的用户名和密码,以冒号分隔),最后加上 @ 符号,再加上代理地址与端口。

随后我们声明了一个 proxies 变量,配置了 HTTP 和 HTTPS 两个键值对,它们的值均为 proxy,意味着对于 HTTP 和 HTTPS 网站请求,都会使用 proxy 变量中定义的代理。

接下来,通过一个循环进行三次代理测试,请求的 URL 仍然是 https://ipinfo.io,该站点用于返回请求者的真实 IP 地址和所处地域。

运行结果如下:

{"ip": "39.144.18.26","city": "Shanghai","region": "Shanghai","country": "CN","loc": "31.2222,121.4581","org": "AS9808 China Mobile Communications Group Co., Ltd.","postal": "200000","timezone": "Asia/Shanghai","readme": "https://ipinfo.io/missingauth"
}
{"ip": "39.144.18.26","city": "Shanghai","region": "Shanghai","country": "CN","loc": "31.2222,121.4581","org": "AS9808 China Mobile Communications Group Co., Ltd.","postal": "200000","timezone": "Asia/Shanghai","readme": "https://ipinfo.io/missingauth"
}
{"ip": "39.144.182.55","city": "Zhanjiang","region": "Guangdong","country": "CN","loc": "21.2339,110.3875","org": "AS24445 Henan Mobile Communications Co.,Ltd","postal": "524000","timezone": "Asia/Shanghai","readme": "https://ipinfo.io/missingauth"
}

如您所见,每次请求的代理 IP 都是随机的,并且 IP 的地理位置确实对应真实手机流量。

当然,以上的代理设置方式其实相对简洁。

实际上,这段代码相当于在请求时额外设置了一个 Headers - Proxy Authorization,因此以上代码还可改写为:

import requests
import base64proxy_host = 'cellular.proxy.acedata.cloud'
proxy_port = '30000'
proxy_username = '{proxy_username}' # 8位用户名
proxy_password = '{proxy_password}' # 32位密码credentials = base64.b64encode(f'{proxy_username}:{proxy_password}'.encode()).decode()proxies = {'http': f'http://{proxy_host}:{proxy_port}','https': f'http://{proxy_host}:{proxy_port}'
}headers = {'Proxy-Authorization': f'Basic {credentials}'
}for _ in range(3):resp = requests.get('https://ipinfo.io',proxies=proxies, headers=headers)print(resp.text)

在这里,我们通过 Proxy-Authorization 请求头额外设置了代理的用户名和密码(经过 Base64 编码),这样的代码运行效果也是一致的。

对于其他语言,如 JavaScript 的 axios,也可以采取类似的设置方式:

const axios = require("axios");
const base64 = require("base64");const proxy_host = "cellular.proxy.acedata.cloud";
const proxy_port = "30000";
const proxy_username = "{proxy_username}"; // 8位用户名
const proxy_password = "{proxy_password}"; // 32位密码const credentials = base64.encode(`${proxy_username}:${proxy_password}`);const proxies = {http: `http://${proxy_host}:${proxy_port}`,https: `http://${proxy_host}:${proxy_port}`,
};const headers = {"Proxy-Authorization": `Basic ${credentials}`,
};for (let i = 0; i < 3; i++) {axios.get("https://ipinfo.io", { proxies, headers }).then((resp) => console.log(resp.data)).catch((err) => console.error(err));
}

运行效果也同样如出一辙。

对于其他编程语言的设置方法,您可以参考上述内容进行相应改写。

购买更多

如果您的套餐已用尽,您需要购买更多额度以继续使用这一代理服务。

请前往「申请页面」,直接点击「购买更多」按钮进行选购,单次购买更多的单价会更加实惠。

这篇关于新手网络爬虫利器介绍 之 移动蜂窝网络代理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114990

相关文章

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@