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

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

相关文章

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~