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

移动蜂窝代理对接指南

在爬虫与反爬虫的较量愈演愈烈之际,众多网站与应用程序的风控机制不断升级,其中最常见的手段便是 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 requests

proxy = '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 base64

proxy_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));
}

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

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

购买更多

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

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

  • 26
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值