Python爬蟲進階必備 | 關於 ReRes 的一篇教程
- 2020 年 3 月 18 日
- 筆記
![](https://ask.qcloudimg.com/http-save/yehe-1477307/8hht245i2b.jpeg)
先來講講為什麼要用到 ReRes ?
在爬蟲開發的過程中,想要修改網站的 JS 來規避網站的無限 Debugger ,或者想給線上的 JS 加點調試的語句,我們就需要把遠程的 JS 映射到本地的文件上,這樣就可以通過修改本地的文件進行線上的調試。
通常面對這樣的需求,我們可以通過一些工具完成:
- Windows 下可以使用 Fiddler ,Mac 下可以使用 Charles
- Chrome 開發工具自帶的 Override
- ReRes 和 Resource Override 插件
- Whistle – 跨平台 web 調試代理工具
個人經常使用的是 Chrome 開發工具自帶的 Override 以及 ReRes 插件。
本篇主要介紹關於 ReRes 插件的使用。
有條件的直接使用谷歌商店安裝:https://chrome.google.com/webstore/detail/reres/gieocpkbblidnocefjakldecahgeeica?hl=zh-CN&gl=CN
或者在後台回復「reres」獲取離線版本。
下載好離線版本之後打開
chrome://extensions/
拖入即可安裝
安裝好後,在chrome://extensions/
找到 ReRes ,勾選允許訪問文件網址
,至此完成 ReRes 的配置。
ReRes 到底怎麼用?
這個插件的優點就是簡潔,簡潔到不找找相關的資料都不知道怎麼用。
剛剛安裝好的軟件,打開是這個樣的:
![](https://ask.qcloudimg.com/http-save/yehe-1477307/88orkfrc35.png)
ReRes初始界面
點擊添加規則是這個樣子的:
![](https://ask.qcloudimg.com/http-save/yehe-1477307/q462res99c.png)
添加規則
用無從下手
形容是再正確不過了,不過 ReRes 使用方法也很簡單。
點開添加規則之後:
If URL match
欄,填入的是匹配 URL 的規則,這裡填入的是一個正則表達式,比如我想配置github.com/login
這個域名,可以使用*://github.com/login*
這樣的方式匹配,或者使用偷懶的方式直接匹配網站路徑下的文件^https://www.xxxAAA.cn/js/jquery.min.js
If URL match
注意事項:不要填開頭的/
和結束的/x
,如/.*/g
請寫成.*
Response
欄,填寫的是映射的響應地址,比如在 Window 下,我想要將 E 盤下的 index.js 文件映射回去,使用本地地址的方式是file:///E:/index.js
,使用線上地址的方式是http://localhost:3000/xxx/index.js
Response
注意事項:線上地址以http://開頭,本地地址以file:///
開頭,Mac 推薦使用超級右鍵
可以直接複製文件路徑,同時上一點中提到的線上地址需要啟動一個可以訪問靜態文件的服務,可以使用 Flask 快速搭建一個。
添加完成,點擊保存,重新加載頁面即可。
快速練手
光說不練肯定不是鹹魚的風格,這裡快速用一個例子演示一下。
打開夜幕的 JS 逆向的課程練習網站,打開第九題使用符號加密的JS練習題。
我們可以看到網站的index.js
這個文件是混淆後的代碼。
![](https://ask.qcloudimg.com/http-save/yehe-1477307/9upgg6sfyz.png)
為了方便調試,我們使用ReRes
將解密後的明文替換掉這個混淆的文件。
右鍵需要替換的文件,使用copy link address
![](https://ask.qcloudimg.com/http-save/yehe-1477307/1ks7t6h59u.jpeg)
粘貼到 Reres 的If URL match
欄中。
![](https://ask.qcloudimg.com/http-save/yehe-1477307/iyzke21olv.png)
之後複製需要映射的本地文件的路徑,粘貼至Response
欄,點擊保存即可。
![](https://ask.qcloudimg.com/http-save/yehe-1477307/lrizl27csx.png)
重新刷新網頁,即可加載,為了測試是否加載成功,可以寫個彈窗測試下。
![](https://ask.qcloudimg.com/http-save/yehe-1477307/368cjv8w33.png)
到這裡就完成了遠端代碼映射到本地的操作。
不過這裡還是需要另外思考一個問題:
如果需要映射的網站使用的是 Https 的協議,這個時候應該如何完成遠端文件的映射呢?
![](https://ask.qcloudimg.com/http-save/yehe-1477307/vs2qo4rb5f.png)