配置項如圖
選項開關
Enable rules
: 啓用匹配規則
Unmatched requests passthrough
: 不匹配的請求會正常發送到服務器,這個一般要勾上,比如“baidu.com”由於匹配不上規則,如果不勾上則百度會訪問失敗。
Enable Latency
: 延時選項,如果勾上,會多一列“Latency”的展示,然後在某條規則上點擊右鍵菜單“Set Latency”可以設置延時時間,用於調試時模擬服務器響應延時。
規則匹配順序調整
規則匹配優先從上到下:在某條規則右鍵,彈出菜單中的 Promote + 和 Demote - 分別可以上、下調整順序。
規則導出/導入
- 圖二右鍵菜單的
Export All
可以導出所有規則配置,導出的是一個.farx後綴的文件,實際上是一個xml文檔。
<?xml version="1.0" encoding="utf-8"?>
<AutoResponder LastSave="2019-06-25T17:52:57.7451762+08:00" FiddlerVersion="5.0.20192.25091">
<State Enabled="true" Fallthrough="true" UseLatency="false">
<ResponseRule Match="regex:^http://(.*).xxx.com/api/(.*)$" Action="http://xxx.nat123.cc/api/$2" Enabled="true" />
<ResponseRule Match="regex:^http://ide.xxx.com/(.*)$" Action="http://192.168.1.1:8080/$1" Enabled="true" />
<ResponseRule Match="regex:^http://www.xxx.com/(\S*)$" Action="http://192.168.1.1:3000/$1" Enabled="true" />
<ResponseRule Match="regex:^http://ide.xxx.com:8600/(\S*)$" Action="http://192.168.1.1:8080/$1" Enabled="true" />
</State>
</AutoResponder>
- 圖一中的
[Import.. ]
按鈕 可以導入規則配置。
規則設置
點擊“Add Ruler”增加一個規則:
第一個框,用於匹配url的表達式:可以是一個正則表達式,如 regex:^http://ide.xxx.com/(.*)$ ,也可以是一個普通字符串進行精確匹配 。
第二個框,匹配成功後跳轉的目的地址:可以是一個url,如 http://192.168.1.1:8080/$1,或者指定本地的某個文件 E:\test.html。
regex開頭:
表示後面是一個正則表達式,否則按照普通文本匹配,如:regex:^http://ide.xxx.com/(.*)$
參考 https://www.cnblogs.com/pachongshangdexuebi/p/6601363.html
關於正則表達式:
如:^http://ide.xxx.com/(.*)$ 是一個正則表達式,
^
表示從第一個字符開始匹配,
.
匹配除換行符(\n、\r)之外的任何單個字符,
*
匹配前面的子表達式零次或多次,
$
表示匹配到結尾,
()
括號表示一個子正則表達式,
(.*)
匹配除換行符之外的任何字符零次或多次,
(.*)$
匹配除換行符之外的任何字符零次或多次,一直匹配到結尾。
正則表達式語法參考 https://www.runoob.com/regexp/regexp-metachar.html
關於$1 :
表示匹配成功後,將目標字符串中的$1
直接替換爲正則表達式中第1組子表達式匹配成功的內容(每一對括號表示一組子正則表達式,沒有括號的不算子表達式,$後面的數組可以理解爲表達式的索引),
如:$1、$2...$n
依次類推表示 第1組、第2組…第n組 子正則表達式 。
比如:^http://(\S*).xxx.com/(\d)$
, 有兩子組子正則表達式,第1組子表達式爲:(\S*),第2組表達式爲:(\d)。
比如 http://ide.xxx.com/abc
匹配 ^http://ide.xxx.com/(.*)$
成功,第1組子表達式(.*)匹配的是abc,則目標地址http://192.168.1.1:8080/$1
中的 $1 會替換成abc ,即變爲:http://192.168.1.1:8080/abc
下圖的規則中有兩個子表達式(\S*)
和(.*)
,$2
表示替換第二個子表達式(.*)
的匹配字符
不在括號內的則不算是一個子表達式,如下截圖去掉括號後,\S*
就不是子表達式了,只有(.*)
纔是子表達式,因此目標串使用$1
與上圖的$2
等價
當然目標字符串的$1
,$2
等可以放任何位置,不一定放結尾,如: http://xxx.nat123.cc/$1/api/$2
參考:
https://www.cnblogs.com/tugenhua0707/p/4637771.html
https://blog.csdn.net/pc_gad/article/details/48194605