- 参考 Boris 大佬的这篇文章
- 参考崔佬的这篇文章
- 生成
requirements.txt
pipreqs reverse_practice --encoding=utf8 --force
- 由于
node_modules
太大,且默认是可以被上传的。所以我们需要创建一个.gitignore
文件,目的是忽略上传某个文件或者文件夹。 - 步骤如下:
创建
.gitignore
文件cd reverse_practice touch .gitignore
创建好文件之后,在里边添加需要忽略的目录和文件即可
- 忽略规则如下:
target //忽略这个target目录 angular.json //忽略这个angular.json文件 log/* //忽略log下的所有文件 css/*.css //忽略css目录下的.css文件
- 克隆本项目至本地
- git clone [email protected]:liyf-code/reverse_practice.git
- 准备
python
运行环境(version: 3.9.1)- cd reverse_practice
- pip3 install -r requirements.txt
- 准备
nodejs
运行环境(version: 14.17.3)- cd reverse_practice
- npm install
- curl转python代码,提高开发效率: curlconverter
- 1024程序员开发工具箱: 1024tools
个别网站的逆向思路及步骤,记录在py文件中
网站名称 | 网站url地址 | 文档 | 项目位置 |
---|---|---|---|
欧科云链 | 链接 | 点击跳转 | oklink |
房天下 | 链接 | 点击跳转 | passport_fang |
企名片 | 链接 | 点击跳转 | qimingpian |
天翼云 | 链接 | 点击跳转 | ctyun |
猿人学 | 链接 | yuanrenxue | |
巨潮资讯-数据中心 | 链接 | webapi | |
MyToken | 链接 | 点击跳转 | mytokencap |
新榜资讯 | 链接 | newrank | |
粉笔网 | 链接 | fenbi | |
福建省公共资源交易-交易信息 | 链接 | 点击跳转 | ggzyfw_fujian |
犀牛数据 | 链接 | 点击跳转 | xiniu |
全国建筑市场监管公共服务平台 | 链接 | 点击跳转 | jzsc |
得物(m.poizon.com) | 链接 | 点击跳转 | dewu |
网易云 | 链接 | music163 | |
易车网 | 链接 | 点击跳转 | yiche |
巴比特-快讯 | 链接 | 点击跳转 | 8btc |
加密解密-APP喵 | 链接 | appmiu | |
艺恩 | 链接 | endata | |
中国招投标公共服务平台 | 链接 | ctbpsp | |
37网手游 | 链接 | 点击跳转 | my_37 |
中国·国家地名信息库 | 链接 | dmfw_mca | |
看准网 | 链接 | kanzhun | |
崔佬搭建的练习网站 | 链接 | scrape_spa2 | |
浙江省核酸采样点查询 | 链接 | 点击跳转 | hsddcx |
酷我音乐 | 链接 | music_kuwo | |
领导留言板 | 链接 | 点击跳转 | liuyan |
全国核酸检测机构查询 | 链接 | 点击跳转 | bmfw |
美食优惠聚合 | 链接 | 点击跳转 | waitpay |
查策网 | 链接 | chacewang | |
裁判文书响应数据解密 | 链接 | cpws | |
搜狐详情页图片地址解密 | 链接 | 点击跳转 | souhu |
黑猫投诉 | 链接 | tousu_sign | |
猎聘 | 链接 | 点击跳转 | liepin |
以下汇总常用的hook代码,来源于公众号文章 JS 逆向之 Hook,吃着火锅唱着歌,突然就被麻匪劫了!
-
Hook cookies
(function () { 'use strict'; var cookieTemp = ''; Object.defineProperty(document, 'cookie', { set: function (val) { if (val.indexOf('__dfp') != -1) { debugger; } console.log('Hook捕获到cookie设置->', val); cookieTemp = val; return val; }, get: function () { return cookieTemp; }, }); })();
-
Hook headers
(function () { var org = window.XMLHttpRequest.prototype.setRequestHeader; window.XMLHttpRequest.prototype.setRequestHeader = function (key, value) { if (key == 'safe') { debugger; } return org.apply(this, arguments); }; })();
-
Hook URL
(function () { var open = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function (method, url, async) { if (url.indexOf("login") != -1) { debugger; } return open.apply(this, arguments); }; })();
-
Hook JSON.stringify
(function() { var stringify = JSON.stringify; JSON.stringify = function(params) { console.log("Hook JSON.stringify ——> ", params); debugger; return stringify(params); } })();
-
Hook JSON.parse
(function() { var parse = JSON.parse; JSON.parse = function(params) { console.log("Hook JSON.parse ——> ", params); debugger; return parse(params); } })();
-
Hook eval
(function() { // 保存原始方法 window.__cr_eval = window.eval; // 重写 eval var myeval = function(src) { console.log(src); console.log("=============== eval end ==============="); debugger; return window.__cr_eval(src); } // 屏蔽 JS 中对原生函数 native 属性的检测 var _myeval = myeval.bind(null); _myeval.toString = window.__cr_eval.toString; Object.defineProperty(window, 'eval', { value: _myeval }); })();