前情提要
起源
在码市上看到了一个价值 1000 RMB 的项目:耐克官网模拟登录,唯一要求是纯代码模拟登录。
原本觉得不会有多难,抱着试一试的想法搞了一天,没想到的是,真的是刷新了我对网站 Cookie 使用的认知,Cookie 还可以这么玩?
声明
关于登录信息的提交这些,和其他网站一样,都是简单的表单 Post,不必多说,关于网站接口的 url 我会在详细说到的时候给出
完整实现代码,本篇文章不会给出,因为在大多数情况,这类代码属于灰产,所以本着学习交流的心态,我只分享一下思路
准备
工具
-
火狐浏览器:Hacking 必备
-
火狐插件:Cookie AutoDelete 方便重置网站 Cookie
-
js_beautify js 代码解压缩
-
vscode 编辑器 用于查看编辑 js 代码
开发
-
环境:Python,NodeJS
-
Idea:PyCharm
-
python 库:requests,execjs,uuid
-
node 库:jsdom
准备阶段
以下将采用大量截图的方式,重现分析过程,流量党告退
登录接口
想要模拟登录,当然是直接从登录接口下手
接口信息如下:
URL
https://unite.nike.com/login
查询字符串
Request Headers
Request Cookie
Request Payload
Ok,齐活
接口精简
可以看到,这个登录接口相当复杂,所以和平常一样,试着精简请求,逐渐得到最精简的接口
以下过程全部使用火狐开发者工具的编辑重发功能,过程省略
只强调一点,由于登录接口有使用次数限制,为了避免重复登录封号以及太累,所以我采取了以下措施:
-
优先精简了部分比较麻烦的字段
-
使用故意使用错误的用户信息登录得到的 "401" 错误来判断字段是否精简成功
-
在火狐隐私窗口进行所有测试工作:解决登录次数过多出现的错误窗口
精简结果如下:
-
查询字符串
'uxid': 'com.nike.commerce.nikedotcom.web', 'locale': 'zh_CN', 'backendEnvironment': 'identity', 'visit': '1', 'visitor': '',