乐趣区

关于前端:让技术创造价值之手把手教你薅羊毛篇

间隔上一篇年终总结的文章曾经过了 3 个多月了,在年终总结中写到了利用脚本主动薅羊毛的话题,评论里有不少小伙伴比拟感兴趣。so,明天就来给大家具体介绍一下如何让技术发明价值(得给薅羊毛回升一个档次)。本文没有什么技术难点,即便技术小白也能轻松上手。

手机里的各种 APP 为了留住用户,减少日活月活量,基本上都会推出签到换礼品之类的流动。接下来我就拿我之前常常用的叮咚买菜 APP 来举例,教大家一步一步走向薅羊毛的光明大路。

后期筹备工作

  1. 抓包工具(比方 charles)
  2. node 环境
  3. 腾讯云账号

抓包

如何实现对手机端申请的抓包,我在这篇文章 charles 抓包中有介绍,不理解的小伙伴能够先看看这篇文章,本文就不做过多介绍。配置好代理之后,接下来就到了重点环节。

剖析申请 url 及参数

首先咱们须要找到某个动作对应的理论申请 url。拿叮咚买菜的签到性能举例,点击去签到,会抓到很多申请,从名字中一眼就能看到咱们要的url 是哪个。

从上图中能够看到申请的 urlheader 以及返回的响应。有了这些货色,咱们就能够着手写程序了。

具体代码编写

node端发送 ajax 申请的库有许多,在这里咱们选用相熟的axios

首先来结构一下header

const SIGN_IN_HEADER = {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "zh-cn",
    "Connection": "keep-alive",
    "Content-Type": "application/x-www-form-urlencoded",
    "ddmc-api-version": "9.7.3",
    "ddmc-build-version": "9.48.1",
    "ddmc-app-client-id": "13",
    "ddmc-station-id": "5f1378ce93e0310001d3609e",
    "origin": "https://activity.m.ddxq.mobi",
    "Referer": "https://activity.m.ddxq.mobi/",
    "Cookie": 'xxxxxxxxxxxxxx',
    "User-Agent": 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 xzone/9.48.1 station_id/5f1378ce93e0310001d3609e'
}

接下来是表单提交的 data 信息:

const POST_DATA = {
    "api_version": 9.1,
    "station_id": "5f1378ce93e0310001d3609e",
    "latitude": "40.050802",
    "longitude": "116.413449"
}

有了 headerdata,就能够发送申请了。

const SIGN_IN_URL = 'https://sunquan.api.ddxq.mobi/api/v2/user/signin/';

axios.post(SIGN_IN_URL, {data: POST_DATA}, {headers: SIGN_IN_HEADER}).then(res => {console.log(res.data, 'success');
}).catch(err => {console.log(err, 'error');
});

运行上述代码,在控制台打印出以下信息:

能够看到,和咱们下面抓包截图中的返回信息是统一的,功败垂成。

通过上述的步骤,曾经能够做到用程序来解决签到的问题了。叮咚买菜里还有一些其余的工作,比如说养鱼的小游戏,每天做工作喂食能够换草鱼,到目前为止曾经白嫖了好几条。具体的工作实现步骤都是一样的,在这里就不做过多的介绍了。

下面的程序须要每天手动运行一下才行,须要人为参加。有谋求的咱们怎么能满足于此呢,程序曾经长大了,得学会本人跑起来。接下来有请腾讯云函数闪亮退场。

腾讯云函数主动执行

腾讯云函数官网地址在这里。

新建函数

进入后选择函数服务 -> 能够手动抉择一个离你近的地区 -> 新建。

而后抉择从头开始,能够起一个有标识的名字,比方我这里就叫的 dingdong,而后运行环境抉择node12.16,高版本的node 不晓得是不是有什么 bug,异步申请如同没有发送,在日志中看不到打印的信息(害我折腾了良久,明明本地就能够,部署下来就是不行)。

函数代码提交形式抉择本地上传文件夹,执行办法不必批改,执行办法表明了调用云函数时须要从哪个文件中的哪个函数开始执行。这里 index.main_handler 中的 index 示意执行的入口文件为 index.jsmain_handler 示意执行的入口函数为 main_handler。因而须要在本地根目录创立一个 index.js 文件。

入口 index.js 文件:

'use strict';
exports.main_handler = async (event, context) => {
    // 须要加上这个,解决热启动问题
    delete require.cache[require.resolve('./src/sign.js')];
    require('./src/sign.js');
};

而后将整个文件夹上传即可。

接下来的高级配置和触发器配置都先不必管,间接点击创立就能够生成云函数。

部署

而后进入函数治理 -> 函数代码,就能够看到咱们方才上传的文件夹全部内容(新版云函数 10M 以上的内容只展现入口文件)。点击部署,咱们的代码就部署到云服务器上了。

点击测试,能够在线进行测试并调试,在日志查问中能够看到打印进去的信息。

定时器配置

记下来就是对定时器的配置。
入口在在函数治理的触发治理。

进入后抉择创立触发器,其中触发周期有几个设置好的值,如果不喜爱的话能够抉择自定义触发周期。无关 Cron 表达式的设置能够参考这里。一共有 7 个字段,别离代表了秒、分、小时、日、月、星期、年。图中代表的意思就是每天的 8 点 13 分 14 秒会主动触发一次。

如果急着测试的话,能够再新建一个触发器,抉择每分钟执行一次,这样就能够不必怎么期待就能看到成果。然而测试完千万记得要把这个定时器关了,我的一块钱就是这么节约掉的。

接下来就根本不必再操心,云函数会在设定好的工夫主动执行。须要咱们做的就是偶然回来看一眼,如果明天的工作没有执行胜利,大概率是 cookie 过期了,再抓包获取一下 cookie 替换就能够了。

好了,无关薅羊毛的教程到这里就完结了。大家能够看看本人罕用的 APP 及网站,没事的时候捣鼓捣鼓。

倡议

薅羊毛不易,大家且薅且珍惜,说不定哪天平台就改了规定或者把你关到了小黑屋,可不赖我。

退出移动版