本文主要是介绍新手网络爬虫利器介绍 之 移动蜂窝网络代理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
移动蜂窝代理对接指南
在爬虫与反爬虫的较量愈演愈烈之际,众多网站与应用程序的风控机制不断升级,其中最常见的手段便是 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));
}
运行效果也同样如出一辙。
对于其他编程语言的设置方法,您可以参考上述内容进行相应改写。
购买更多
如果您的套餐已用尽,您需要购买更多额度以继续使用这一代理服务。
请前往「申请页面」,直接点击「购买更多」按钮进行选购,单次购买更多的单价会更加实惠。
这篇关于新手网络爬虫利器介绍 之 移动蜂窝网络代理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!