CDP协议伪装技巧:rewards-farmer如何把Edge伪装成MSRewards桌面客户端
【免费下载链接】rewards-farmerAutomation for MS Rewards based on https://youtu.be/4qdPcMNaioA项目地址https://gitcode.com/gh_mirrors/re/rewards-farmer点击查看免费下载rewards-farmer 是一个 Microsoft Rewards 自动刷分工具它用 Selenium 驱动 Edge 浏览器再通过 CDP 协议注入自定义请求头把浏览器伪装成 MSRewards 桌面客户端从而解锁仅桌面端可用的奖励任务并配合拟人化的鼠标轨迹和打字节奏来绕过自动化检测。这篇文章拆解它的全部伪装技巧。一、奖励网站凭什么识别自动化脚本在讲伪装之前先弄清楚检测方手里有什么证据。Selenium 驱动的浏览器默认会留下一串明显的自动化指纹rewards-farmer 的对策可以按指纹 → 对策一一对应检测点自动化留下的痕迹rewards-farmer 的对策源码位置页面脚本navigator.webdriver true--disable-blink-featuresAutomationControlledsrc/browser.py页面脚本被自动化测试软件控制信息条excludeSwitches移除enable-automationsrc/browser.py服务端请求缺少桌面端标识看不到桌面专属任务CDP 注入MSRewards/DesktopUser-Agentsrc/rewards_tasks.py行为分析打字瞬间完成、鼠标走直线随机打字间隔 贝塞尔轨迹 Fitts 定律src/mouse_trajectory.py页面状态窗口失焦时页面逻辑被暂停伪装document.hidden为可见src/tab_utils.py可以看到伪装分三个层次启动参数抹掉静态指纹 → CDP 协议改写请求身份 → 拟人化输入覆盖动态行为。下面逐层拆解。二、第一层伪装用启动参数移除 Selenium 自动化指纹浏览器还没打开之前指纹就已经存在了。rewards-farmer 在 src/browser.py 的build_options中做了三件事options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_experimental_option(useAutomationExtension, False) options.add_argument(--disable-blink-featuresAutomationControlled)excludeSwitches移除enable-automationSelenium 默认会给浏览器加这个开关导致页面顶部出现黄条提示Chrome 正在受到自动化测试软件的控制任何页面脚本也都能读到它。移除后这条最显眼的自曝信息直接消失。useAutomationExtension设为False不加载 Selenium 的自动化扩展进一步消除扩展层面的特征。--disable-blink-featuresAutomationControlled这是关键一步。Chromium 在自动化模式下会把navigator.webdriver置为true而这一特征正是由 Blink 的AutomationControlled特性控制的。禁用该特性后页面里执行navigator.webdriver会返回false大多数反爬虫检测库的第一道判断就此失效。此外启动参数里还有一个不那么伪装但同样重要的细节--accept-langen-USsrc/browser.py。脚本靠按钮的英文文案来定位元素锁定英文界面能避免用户系统语言不同导致任务全部找不到入口。三、第二层伪装核心CDP 协议把 Edge 改成 MSRewards 桌面客户端如果说第一层只是洗白那这一层就是真正的变身——它要解决的不是我是不是浏览器而是我是什么客户端。Microsoft Rewards 有一些任务只对官方桌面客户端开放服务端靠请求头来区分来源。普通的 Selenium 请求发出的是标准 Edge 浏览器的 User-Agent服务端一看就知道你只是个浏览器于是这些任务根本不出现。rewards-farmer 的解法藏在 src/rewards_tasks.py 的初始化代码里短短几行就是全文最精华的部分# Set headers to spoof the rewards app for the rewards only quests self.driver.execute_cdp_cmd(Network.enable, {}) headers { User-Agent: Mozilla/5.0 ... Edg/151.0.0.0 MSRewards/Desktop/1.1.0, X-Rewards-Source: msrewards-desktop, } self.driver.execute_cdp_cmd(Network.setExtraHTTPHeaders, {headers: headers})这里用到了CDPChrome DevTools Protocol的两个命令这也是 Selenium 4 的强大之处——execute_cdp_cmd让你绕过 WebDriver 的标准接口直接向浏览器下发协议级指令Network.enable先开启网络域。这是前置条件不开启的话setExtraHTTPHeaders不会生效。Network.setExtraHTTPHeaders给该目标的所有出站 HTTP 请求附加额外请求头。注意是所有请求——导航、XHR、图片、静态资源整个会话里发出的每个包都带着这两行头伪装是全局的不存在漏网之鱼。两个头的分工很清晰User-Agent 末尾的MSRewards/Desktop/1.1.0标准 Edge 的 UA 只到Edg/151.0.0.0为止。官方桌面客户端在这个位置追加了MSRewards/Desktop标识rewards-farmer 原样照抄让请求看起来来自桌面应用本体。自定义头X-Rewards-Source: msrewards-desktop这是桌面端独有的来源声明等价于向服务端出示身份证。 为什么用 CDP 而不是 Selenium 的add_header思路因为 Selenium 本身没有修改任意请求头的能力而 CDP 是浏览器对自动化端开放的底层控制台——凡是 DevTools 能做的execute_cdp_cmd基本都能做。这也提示了一个通用技巧WebDriver 接口做不到的伪装往往可以直接下探到 CDP 层完成。四、第三层伪装让鼠标和键盘活过来改完了请求头剩下的风险在行为上。真人操作和脚本操作的区别不在点了哪个按钮而在怎么点的。rewards-farmer 在这上面下了相当的功夫。4.1 Fitts 定律驱动的鼠标轨迹mouse_trajectory.py 是项目里最有极客味的模块它要回答一个问题从 A 点到 B 点真人的鼠标怎么走它的做法分四步src/mouse_trajectory.py三次贝塞尔曲线起点、终点固定两个控制点在起点/终点附近随机偏移生成一条自然的弧线而不是直线随机扭曲区间以约 15% 的频率在路径上插入 1~5 像素的微小偏离模拟人手的不稳定逻辑斯谛变换用 sigmoid 函数重排速度曲线让移动呈现先加速、末端减速的真人节奏Fitts 定律定时长移动耗时不是拍脑袋的固定值而是按运动学公式MT a b·ID其中ID log2(2D/W)计算——目标越远越小耗时越长src/mouse_trajectory.py。常数a0.5500、b0.1276也不是随便填的而是 src/fitts_law.py 提供了一个校准程序让操作者反复点击屏幕上的随机目标并记录真实移动时间用最小二乘回归拟合出个人参数。也就是说脚本的鼠标节奏是按人的手速标定的。4.2 带犹豫的打字节奏mimic_typing.py 处理输入节奏。send_keys时每个按键之间会插入随机停顿从三档间隔里按权重抽取0 ~ 0.1s概率 0.377连击、熟练的词0.1 ~ 0.2s概率 0.5492正常打字0.2 ~ 0.4s概率 0.0738偶尔的卡壳这个三档分布比固定间隔更接近真实打字的统计特征也避免了脚本最典型的匀速机器感。4.3 其他细节窗口焦点伪装src/tab_utils.py 的ensure_focus通过Object.defineProperty把document.hidden和visibilityState钉死为可见/聚焦。很多页面的前台任务在检测到窗口失焦后会暂停逻辑这招保证脚本切到后台比如虚拟桌面挂机时页面依然认为自己在前台。搜索词后缀-noaisrc/rewards_tasks.py 每次提交的查询都追加-noai让结果页不展开 AI 回答卡片避免额外的交互和流量特征同时保持搜索结果结构稳定、便于定位元素。五、快速上手运行 rewards-farmer了解了原理跑起来并不复杂。前置要求Python 3.12、Poetry、已安装的 Microsoft Edge自带 webdriver。git clone https://gitcode.com/gh_mirrors/re/rewards-farmer cd rewards-farmer poetry install然后按 README.md 的建议走三步初始化配置python src/init-config.py交互式设置各项参数手动登录一次运行python src/main.py等页面打开后 Ctrl-C 退出在弹出的 Edge 窗口里登录你的 Microsoft 账号Bing 和 rewards.bing.com 都要登录让登录态保存在data-dir的专用 profile 里正式运行再次运行python src/main.py脚本即开始自动完成每日任务。几个常用可选项搜索词来源QUERY_SOURCEtrends使用 Google Trends / Wikipedia / Bing 自动补全无需任何 API KeyQUERY_SOURCEllm则调用 OpenRouter 或本地 Ollama 生成搜索词配置见 README.md 的.env说明无头模式REWARDS_HEADLESS1配合 src/browser.py 中显式设置的1920x1080窗口尺寸指针代码按视口坐标工作Dockerdocker compose build后直接跑无需在宿主机装 Edge详见 docker-compose.yml多账号REWARDS_ACCOUNTSpersonal,spare每个账号一个独立 profile 目录逐个顺序执行。⚠️ 最后必须提醒README 明确声明风险自负——使用自动化脚本刷取奖励可能违反服务条款Microsoft 有权对账号采取处罚措施。学习其反检测与拟人化技术本身很有价值但请遵守目标平台的使用条款。六、总结三层伪装缺一不可rewards-farmer 的伪装思路可以浓缩成一张表层次目标关键技术启动参数抹掉静态自动化指纹excludeSwitches、disable-blink-featuresAutomationControlledCDP 请求头改写我是谁的身份Network.setExtraHTTPHeaders注入桌面客户端 UA行为拟人化动态行为不露馅Fitts 定律轨迹、三档打字间隔、焦点伪装其中最有借鉴意义的是第二层当标准 WebDriver 接口无法改变请求身份时execute_cdp_cmd让你直接下探到 CDP 协议层用Network.enableNetwork.setExtraHTTPHeaders两行代码就完成了一次浏览器 → 桌面客户端的完整变身。这正是 CDP 协议在自动化对抗中最锋利的用法。赞分享【免费下载链接】rewards-farmerAutomation for MS Rewards based on https://youtu.be/4qdPcMNaioA项目地址https://gitcode.com/gh_mirrors/re/rewards-farmer点击查看免费下载相关推荐AirCard 如何伪装成 Books 同步AirTrafficcom.apple.atc同步协议全流程拆解AirCard 如何伪装成 Books 同步AirTrafficcom.apple.atc同步协议全流程拆解 AirCardAirCard Windowrdesktop远程桌面协议客户端安装与使用指南rdesktop远程桌面协议客户端安装与使用指南 一、项目目录结构及介绍 rdesktop作为一个开源的UNIX平台远程桌面协议 RDP 客户端其项目在Gi网络与通信Apate文件伪装工具三分钟学会文件格式伪装技巧Apate文件伪装工具三分钟学会文件格式伪装技巧 Apate是一款基于.NET开发的智能文件格式伪装工具能够快速安全地改变文件外观格式帮助用户轻松绕过各种桌面应用上一篇Remotion错误处理终极指南7个常见问题排查与调试技巧下一篇Homebridge HomeKit Secure Video支持实现加密视频存储创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ARouter IProvider与IInterceptor实战:组件化跨模块通信与登录拦截

ARouter IProvider与IInterceptor实战:组件化跨模块通信与登录拦截

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 5:50:30 阅读更多 →
用C语言中断方式实现旋转编码器方向识别与状态机设计

用C语言中断方式实现旋转编码器方向识别与状态机设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 5:50:30 阅读更多 →
HarmonyOS实战:算术闯关App串联状态管理、路由与组件生命周期

HarmonyOS实战:算术闯关App串联状态管理、路由与组件生命周期

做了几十个独立的小功能之后,很多人会遇到一个共同的瓶颈:单个知识点都看得懂,但真要组合成一个完整应用,脑子里还是一团浆糊。我身边就有同事卡在“组件会写了,路由也会跳了,状态管理背了一堆概念&#xf…

2026/10/17 5:49:30 阅读更多 →

最新新闻

Cosmos-H-Dreams 闭环手术策略评估:GR00T-H 策略模型测试完整实战指南

Cosmos-H-Dreams 闭环手术策略评估:GR00T-H 策略模型测试完整实战指南

【免费下载链接】Cosmos-H-Dreams 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/Cosmos-H-Dreams 点击查看 免费下载 Cosmos-H-Dreams 是 NVIDIA 开源的实时、动作条件手术世界模型:给它一帧手术场景图像和一条机器人动作流,它就能在…

2026/10/17 6:24:52 阅读更多 →
工业HMI性能优化:AG-UI协议与Canvas渲染引擎实践

工业HMI性能优化:AG-UI协议与Canvas渲染引擎实践

1. 工业现场为什么需要一套自己的界面协议1.1 从一块触摸屏的卡顿说起我在一家做产线数据采集的团队里待了六年,前四年半都在跟组态软件和触摸屏打交道。车间里最常见的一幕是:操作工站在一台十几寸的工业平板前,点一下按钮,界面要…

2026/10/17 6:24:52 阅读更多 →
不完全信息ε-Nash均衡下的航天器追逃博弈Matlab复现

不完全信息ε-Nash均衡下的航天器追逃博弈Matlab复现

复现期刊论文这件事,最让人头疼的从来不是公式有多长,而是从公式到代码之间那一段没人替你踩的坑。这次复现的项目是不完全信息ε-Nash均衡下的航天器末端追逃博弈策略,Matlab代码实现。它解决的具体问题是这样的:追踪航天器在末端…

2026/10/17 6:24:52 阅读更多 →
AppControl Manager 指南:Windows 应用控制策略从模拟到部署的完整解析

AppControl Manager 指南:Windows 应用控制策略从模拟到部署的完整解析

AppControl Manager 指南:Windows 应用控制策略从模拟到部署的完整解析 【免费下载链接】Harden-Windows-Security Harden Windows Safely, Securely using Official Supported Microsoft methods and proper explanation | Always up-to-date and works with the l…

2026/10/17 6:24:52 阅读更多 →
从 AI 原型到企业应用:权限、知识、工具与隔离执行的架构实践

从 AI 原型到企业应用:权限、知识、工具与隔离执行的架构实践

AI 能帮我们搭页面、写接口、补脚本。原型做出来以后,工程问题才开始集中出现:多个部门怎么共用?工具拿谁的权限执行?检索到的资料能不能给当前用户看?一个脚本卡住,会不会拖慢整个服务? 这些问…

2026/10/17 6:24:52 阅读更多 →
不止文本对话:gemma-4-26B-A4B-it-w8a8-llmcompressor图像、视频、音频多模态输入使用指南

不止文本对话:gemma-4-26B-A4B-it-w8a8-llmcompressor图像、视频、音频多模态输入使用指南

大模型模型量化本地部署多模态 【免费下载链接】gemma-4-26B-A4B-it-w8a8-llmcompressor 项目地址: https://ai.gitcode.com/hf_mirrors/amd/gemma-4-26B-A4B-it-w8a8-llmcompressor 点击查看 免费下载 gemma-4-26B-A4B-it-w8a8-llmcompressor 是 AMD 基于 LLM Com…

2026/10/17 6:23:52 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →