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

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

相关文章

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

基于Python实现温度单位转换器(新手版)

《基于Python实现温度单位转换器(新手版)》这篇文章主要为大家详细介绍了如何基于Python实现温度单位转换器,主要是将摄氏温度(C)和华氏温度(F)相互转换,下面小编就来和大家简单介绍一下吧... 目录为什么选择温度转换器作为第一个项目项目概述所需基础知识实现步骤详解1. 温度转换公式2. 用户输入处

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis