Skip to content

Commit 6497087

Browse files
authored
Merge branch 'main' into dev
2 parents c6970eb + 6deaa34 commit 6497087

File tree

4 files changed

+108
-35
lines changed

4 files changed

+108
-35
lines changed

.gitignore

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,75 @@
1+
### JetBrains template
2+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
3+
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
4+
5+
# User-specific stuff
6+
.idea/**/workspace.xml
7+
.idea/**/tasks.xml
8+
.idea/**/usage.statistics.xml
9+
.idea/**/dictionaries
10+
.idea/**/shelf
11+
12+
# Generated files
13+
.idea/**/contentModel.xml
14+
15+
# Sensitive or high-churn files
16+
.idea/**/dataSources/
17+
.idea/**/dataSources.ids
18+
.idea/**/dataSources.local.xml
19+
.idea/**/sqlDataSources.xml
20+
.idea/**/dynamic.xml
21+
.idea/**/uiDesigner.xml
22+
.idea/**/dbnavigator.xml
23+
24+
# Gradle
25+
.idea/**/gradle.xml
26+
.idea/**/libraries
27+
28+
# Gradle and Maven with auto-import
29+
# When using Gradle or Maven with auto-import, you should exclude module files,
30+
# since they will be recreated, and may cause churn. Uncomment if using
31+
# auto-import.
32+
# .idea/artifacts
33+
# .idea/compiler.xml
34+
# .idea/jarRepositories.xml
35+
# .idea/modules.xml
36+
# .idea/*.iml
37+
# .idea/modules
38+
# *.iml
39+
# *.ipr
40+
41+
# CMake
42+
cmake-build-*/
43+
44+
# Mongo Explorer plugin
45+
.idea/**/mongoSettings.xml
46+
47+
# File-based project format
48+
*.iws
49+
50+
# IntelliJ
51+
out/
52+
53+
# mpeltonen/sbt-idea plugin
54+
.idea_modules/
55+
56+
# JIRA plugin
57+
atlassian-ide-plugin.xml
58+
59+
# Cursive Clojure plugin
60+
.idea/replstate.xml
61+
62+
# Crashlytics plugin (for Android Studio and IntelliJ)
63+
com_crashlytics_export_strings.xml
64+
crashlytics.properties
65+
crashlytics-build.properties
66+
fabric.properties
67+
68+
# Editor-based Rest Client
69+
.idea/httpRequests
70+
71+
# Android studio 3.1+ serialized cache file
72+
.idea/caches/build_file_checksums.ser
73+
74+
175
.idea
248 KB
Loading

README.md

Lines changed: 23 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66

77
数据无价的时代,爬虫与反爬的对抗已经进入白热化状态,其中Cookie反爬是`最常见之一`的反爬类型, 网站方通过混淆得亲妈都不认识的JS代码设置Cookie(通常是浏览器指纹、请求时必须带上的Cookie之类的),
88
面对请求时必须要带上但是又不知道在哪里生成的Cookie, 你在几万行混淆的亲妈都不认识的JS屎海中苦苦挣扎希望能找到生成Cookie的地方(要是逆向思路不科学兴许还会呛上几口...),
9-
甚至几度想找个借口骗自己放弃,或者要不干脆用Selenium之类的浏览器模拟方式算了? 怂个球,此脚本就是来助你一臂之力的!
10-
(你我都知道,这段只是撑场面的废话,你可以略过,如果你没有不幸读完的话...)
9+
甚至几度想找个借口骗自己放弃,或者要不干脆用Selenium之类的浏览器模拟方式算了? 怂个球,此脚本就是来助你一臂之力的! (你我都知道,这段只是撑场面的废话,你可以略过,如果你没有不幸读完的话...)
1110

1211
### 脚本功能
1312

@@ -88,7 +87,7 @@
8887

8988
如果您觉得自动更新太烦,或者有其它的顾虑,可以在这里复制本脚本的代码:
9089

91-
[https://github.com/CC11001100/crawler-js-hook-framework-public/blob/master/001-cookie-hook/js-cookie-monitor-debugger-hook.js](https://github.com/CC11001100/crawler-js-hook-framework-public/blob/master/001-cookie-hook/js-cookie-monitor-debugger-hook.js)
90+
[https://github.com/CC11001100/js-cookie-monitor-debugger-hook/blob/main/js-cookie-monitor-debugger-hook.js](https://github.com/CC11001100/js-cookie-monitor-debugger-hook/blob/main/js-cookie-monitor-debugger-hook.js)
9291

9392
review确认没问题之后在油猴的管理面板添加即可。
9493

@@ -154,8 +153,7 @@ debuggerRules
154153

155154
这个变量是一个数组类型,里面存放着一些规则条件,来决定什么情况下会进入断点。
156155

157-
注意,这是一个数组,数组中的规则是或的关系,触发Cookie修改事件时,
158-
会顺序匹配每条规则, 只要有一条规则匹配成功就会进入一次断点。
156+
注意,这是一个数组,数组中的规则是或的关系,触发Cookie修改事件时, 会顺序匹配每条规则, 只要有一条规则匹配成功就会进入一次断点。
159157

160158
### 5.2 常用配置方式(简化的配置规则)
161159

@@ -191,28 +189,21 @@ const debuggerRules = [/foo.+/];
191189

192190
![](images/README_images/5415caa1.png)
193191

194-
修改完`debuggerRules`数组要注意按Ctrl+S保存脚本,然后因为油猴是在页面加载的时候注入JS代码的,
195-
所以要刷新页面重新注入,当刷新页面的时候就自动进入了断点:
192+
修改完`debuggerRules`数组要注意按Ctrl+S保存脚本,然后因为油猴是在页面加载的时候注入JS代码的, 所以要刷新页面重新注入,当刷新页面的时候就自动进入了断点:
196193

197194
![](images/README_images/47c3b465.png)
198195

199-
上图的红色框A中是专门传进来的一些变量,通过将鼠标移动到这些变量上查看值,
200-
我们能够大概知道当前断点的一些情况:
196+
上图的红色框A中是专门传进来的一些变量,通过将鼠标移动到这些变量上查看值, 我们能够大概知道当前断点的一些情况:
201197

202198
![](images/README_images/0cf06995.png)
203199

204-
然后就是红色框B,我们打Cookie断点就是为了追踪调用栈定位生成Cookie的地方,
205-
红色方框内是本脚本的调用栈,有很明显的`userscript.html`标识,
206-
忽略此部分的调用栈即可。
200+
然后就是红色框B,我们打Cookie断点就是为了追踪调用栈定位生成Cookie的地方, 红色方框内是本脚本的调用栈,有很明显的`userscript.html`标识, 忽略此部分的调用栈即可。
207201

208202
然后追溯调用栈,能够看到设置Cookie的地方:
209203

210204
![](images/README_images/33dc63f1.png)
211205

212-
当然看这个栈对我们没用,我们要做的就是逐步往前定位,
213-
直到定位到真正生成Cookie的地方,但是呢,本脚本只能帮你打个断点,
214-
后面星辰大海的征程就要靠你自己啦!
215-
206+
当然看这个栈对我们没用,我们要做的就是逐步往前定位, 直到定位到真正生成Cookie的地方,但是呢,本脚本只能帮你打个断点, 后面星辰大海的征程就要靠你自己啦!
216207

217208
#### 5.2.2 Cookie名字和事件结合
218209

@@ -283,8 +274,7 @@ Cookie发生了变化细分为增加Cookie、删除Cookie、更新已有的Cooki
283274

284275
#### 增加Cookie事件
285276

286-
Cookie之前在本地不存在,这是第一次添加。 有可能是第一次访问这个网站
287-
,也有可能是清除了Cookie重新访问,或者是每次访问网站都会生成新的Cookie,
277+
Cookie之前在本地不存在,这是第一次添加。 有可能是第一次访问这个网站 ,也有可能是清除了Cookie重新访问,或者是每次访问网站都会生成新的Cookie,
288278
甚至可能是网站自己的代码把Cookie删了重新添加,这都会触发增加Cookie事件。
289279

290280
比如执行下面的代码,这里为了保证Cookie之前不存在,在cookie的名字中加了时间戳:
@@ -297,24 +287,21 @@ document.cookie = "foo_" + new Date().getTime() + "=bar; expires=Fri, 31 Dec 999
297287

298288
![](images/README_images/10ea2db6.png)
299289

300-
301290
#### 更新Cookie事件
302291

303292
当一个Cookie在本地已经存在,然后又尝试为它设置值,就会触发更新Cookie事件。
304293

305294
比如下面的代码:
295+
306296
```js
307297
document.cookie = "foo_10086=blabla; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
308298
document.cookie = "foo_10086=wuawua; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
309299
```
310300

311-
第一条设置Cookie的语句会触发Cookie新增事件,
312-
第二条设置Cookie的语句因为要设置的Cookie已经存在了,
313-
所以触发了Cookie更新事件。
301+
第一条设置Cookie的语句会触发Cookie新增事件, 第二条设置Cookie的语句因为要设置的Cookie已经存在了, 所以触发了Cookie更新事件。
314302

315303
![](images/README_images/fa06f80c.png)
316304

317-
318305
#### 删除Cookie事件
319306

320307
如果前端开发者在设置Cookie的时候,给了一个早于当前时间的expires, 则意味着要删除这个Cookie,比如一种常见的删除Cookie的方式:
@@ -328,9 +315,7 @@ document.cookie = "foo=; expires=" + expires + "; path=/"
328315

329316
![](images/README_images/35720fae.png)
330317

331-
由上面也可以看出来,触发Cookie删除事件纯粹是检测expires,
332-
并不会真的去检查这个Cookie之前是否存在。
333-
318+
由上面也可以看出来,触发Cookie删除事件纯粹是检测expires, 并不会真的去检查这个Cookie之前是否存在。
334319

335320
### 5.5 控制事件类型断点是否开启的标志位
336321

@@ -386,14 +371,21 @@ consoleLogFontSize
386371

387372
设置了Cookie并且立刻就重定向到了新的页面,对于这种操作,有可能会Hook不到,这是油猴脚本的问题,如果坚持要Hook, 可以采用挂代理将本脚本注入到这个URL的响应的头部。
388373

374+
# 八、实战示例
375+
376+
此页面下是一些使用此脚本逆向的实战例子汇总:
377+
[点我进入导航页](docs)
378+
379+
# 九、其它
389380

390-
# 八、其它
391381
本项目拆分自:
392-
```text
393-
https://github.com/CC11001100/crawler-js-hook-framework-public/tree/master/001-cookie-hook#%E7%9B%91%E6%8E%A7%E5%AE%9A%E4%BD%8Djavascript%E6%93%8D%E4%BD%9Ccookie
394-
```
382+
[https://github.com/CC11001100/crawler-js-hook-framework-public/tree/master/001-cookie-hook#%E7%9B%91%E6%8E%A7%E5%AE%9A%E4%BD%8Djavascript%E6%93%8D%E4%BD%9Ccookie](https://github.com/CC11001100/crawler-js-hook-framework-public/tree/master/001-cookie-hook#%E7%9B%91%E6%8E%A7%E5%AE%9A%E4%BD%8Djavascript%E6%93%8D%E4%BD%9Ccookie)
383+
384+
更改了namespace,可能安装量要清零了,截图纪念下,截止到目前(2022-7-29 21:40:01)安装量破三百了,感觉对于这么窄领域的一个小工具来说很不容易了...
395385

396-
# 九、感谢支持
386+
![image-20220729214105718](README.assets/image-20220729214105718.png)
387+
388+
# 十、感谢支持
397389
感谢热心网友反馈问题,谢谢支持。
398390

399391
<div>
@@ -416,7 +408,3 @@ https://github.com/CC11001100/crawler-js-hook-framework-public/tree/master/001-c
416408
</ul>
417409
</div>
418410

419-
420-
421-
422-

docs/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# 逆向实例导航
2+
3+
欢迎提交使用此脚本进行逆向的例子,可以是一个链接,也可以是一个markdown放在此目录下,
4+
只要是用到了此脚本即可,后续本人也会陆续添加一些实际例子。
5+
6+
- [TODO](#)
7+
8+
9+
10+
11+

0 commit comments

Comments
 (0)