使用 DrissionPage 和 2Captcha 处理 Turnstile 验证并获取 Faucet 签名

本文主要是介绍使用 DrissionPage 和 2Captcha 处理 Turnstile 验证并获取 Faucet 签名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用 DrissionPage 和 2Captcha 处理 Turnstile 验证并获取 Faucet 签名

在这篇教程中,我们将学习如何使用 DrissionPage 库模拟浏览器操作获取 Cloudflare Turnstile 验证,以及通过 2Captcha API 自动化解决验证码问题。我们将以从某 faucet 网站获取签名为例,演示两种获取验证码验证的方法:手动模拟获取验证码值和通过 2Captcha 自动化获取验证码。

环境要求:

Python 版本 >= 3.7
安装必要的库:
bash
pip install drissionpage
pip install fake_useragent
pip install requests
pip install loguru
pip install time

方法一:手动模拟获取 Turnstile 验证值

我们通过 DrissionPage 模拟浏览器请求,手动获取 Turnstile 验证值。
步骤:
导入所需库:

from DrissionPage import ChromiumPage, ChromiumOptions
from fake_useragent import UserAgent
import time

编写函数以获取 Cloudflare 验证 Token:
该函数通过 DrissionPage 模拟打开网页,并从 Cloudflare 验证页面抓取 cf-turnstile-response。

def get_cf_token(url):# 设置无头模式co = ChromiumOptions()co.headless(False)  # 设置是否启用无头浏览器模式co.set_user_agent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0')# 创建 DrissionPage 实例page = ChromiumPage(co)# 访问目标网页page.get(url)time.sleep(10)  # 等待页面加载# 等待 Turnstile 验证字段加载page.wait.ele_displayed('@name=cf-turnstile-response')# 获取验证码的 tokeninput_element = page.ele('@name=cf-turnstile-response')response_value = input_element.value# 关闭页面并返回 tokenpage.quit()return response_value

获取 Faucet 签名:
模拟请求接口以获取签名。通过抓取的验证码 token 完成身份验证。

import requests
from loguru import loggerheaders = {'Accept': 'application/json','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Cache-Control': 'no-cache','Connection': 'keep-alive','Origin': 'https://miles.plumenetwork.xyz','Referer': 'https://miles.plumenetwork.xyz/','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-site','sec-ch-ua': '"Not)A;Brand";v="99", "Microsoft Edge";v="127", "Chromium";v="127"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"',
}def get_faucet_sign(address, token='ETH'):assert token in ('GOON', 'ETH')  # 限定 token 为 GOON 或 ETHjson_data = {'walletAddress': address,'token': token,'verified': get_cf_token('https://faucet.plumenetwork.xyz/')  # 手动获取 Turnstile token}response = requests.post('https://faucet.plumenetwork.xyz/api/faucet', headers=headers, json=json_data)return response.text
# 测试调用
print(get_faucet_sign('0x72691a36ED1fAC3b197Fb42612Dc15a8958bf9f2'))

方法二:使用 2Captcha 自动解决验证码

为了进一步自动化,我们可以使用 2Captcha API 解决验证码。
步骤:
注册 2Captcha:
前往 2Captcha 注册账号,并获取 API Key。
通过 2Captcha 获取 Turnstile 验证 Token:
在这种方法中,我们会将 sitekey 和 pageurl 传递给 2Captcha API,自动生成验证码响应。

twocaptcha_apikey = 'xxx'  # 替换为你的 2Captcha API Key
sitekey = '0x4AAAAAAAhtXHMv3RZpIEc7'  # Cloudflare Turnstile 的 sitekey
def get_2captcha_turnstile_token(sitekey, pageurl):params = {'key': twocaptcha_apikey,'method': 'turnstile','sitekey': sitekey,'pageurl': pageurl,'json': 1}# 请求创建任务response = requests.get('https://2captcha.com/in.php?', params=params).json()if response['status'] != 1:raise ValueError(response)task_id = response['request']# 轮询获取任务结果for _ in range(60):response = requests.get(f'https://2captcha.com/res.php?key={twocaptcha_apikey}&action=get&id={task_id}&json=1').json()if response['status'] == 1:return response['request']else:time.sleep(3)return False

使用 2Captcha 获取 Faucet 签名:
通过 2Captcha 自动获取 cf-turnstile-response 验证,并调用 faucet API。

def get_faucet_sign(address, token='ETH'):assert token in ('GOON', 'ETH')json_data = {'walletAddress': address,'token': token,'verified': get_2captcha_turnstile_token(sitekey, 'https://faucet.plumenetwork.xyz/')  # 使用 2Captcha 自动化验证}response = requests.post('https://faucet.plumenetwork.xyz/api/faucet', headers=headers, json=json_data)return response.text
# 测试调用
print(get_faucet_sign('0x72691a36ED1fAC3b197Fb42612Dc15a8958bf9f2'))

总结

本教程介绍了两种获取 Cloudflare Turnstile 验证值并使用 faucet 签名 API 的方法。第一种方法通过 DrissionPage 模拟浏览器操作,手动获取验证码值。第二种方法则通过 2Captcha 服务,自动化解决验证码问题。

这篇关于使用 DrissionPage 和 2Captcha 处理 Turnstile 验证并获取 Faucet 签名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

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

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言