啓動 Charles 後,第一次 Charles 會詢問你是否把Charles設置爲系統的代理,若是此時你忽略了這個詢問窗口,你能夠在後期設置的;將 Charles 設置成系統代理:選擇菜單中的 「Proxy」 -> 「Mac OS X Proxy/windows proxy」 來將 Charles 設置成系統代理。css
視圖結構html
Charles 主要提供兩種查看封包的視圖,分別名爲 「Structure」 和 「Sequence」。前端
須要注意的是,Chrome 和 Firefox 瀏覽器並不必定使用的就是本機,多是一些代理工具,而 Charles 是經過將本身設置成代理服務器來完成資源記錄的,因此若是你的charles沒法截取 Chrome 和 Firefox 瀏覽器的網絡請求內容,須要在瀏覽器裏作下修改。在 Chrome 中設置成使用系統的代理服務器設置便可,或者直接將代理服務器設置成 127.0.0.1:8888 也可達到相同效果。webpack
chrome://settings/?search=%E4%BB%A3%E7%90%86
ios
SwitchyOmega鏈接pac;或者直接鏈接charles代理; 這樣繞過系統代理配置;對於代理配置衝突的狀況下可使用SwitchyOmega,切換很是方便。git
charles可使用系統hosts或三方hosts工具設置的系統hosts配置,也可使用自帶的map remote功能實現映射功能。github
chls.pro/ssl 安裝證書 , ios必須使用safari ,第一步在「描述文件與設備管理」中安裝, 而後在通用 - 關於本機 web
證書信任設置 啓用證書 (fiddler的證書安裝和charles基本類似)chrome
map local情景:一個項目上線後,發現js或者css bug了,怎樣調試?線上項目的靜態文件沒法直接編輯,有何方法在不改變其餘參數的狀況下直接用本地的開發文件替換線上的文件從而方便調試?windows
tools->>map local
Save Response… map local能夠結合這個功能來mock,稍加修改就能夠模式想要的測試數據。
map remote情景:進行一個需求開發,測試環境是:lvxing.st.meituan.com,測試完成,前端開發者上線了,如今QA須要跟蹤線上狀況,如何切到線上環境?
tools->>map remote
Bypass proxy settings for these Hosts & Domains 繞過charles的配置, 這樣charles上的這個配置就失效了,可是不影響hosts工具的配置。
出現衝突時,默認hosts的優先級高
rewrite功能重寫對應的內容,主要能夠對某些匹配請求的header、host、url、path、query param、response status、body進行rewrite。
rewrite能夠作不少手腳。
charles黑名單和白名單工;black list:阻止對匹配HOST的請求;能夠直接把請求丟掉,也能夠直接返回403狀態碼;
修改服務器返回內容 www.jianshu.com/p/f7ceb7992…
出現這種狀況,charles解析不出path,咱們就無法創建映射。 具體的解決方案爲在proxy中的SSL Proxying setting中鉤上Enable SSL Proxying,而且將要解析的host加上
safari瀏覽器能夠經過信任證書來解決, 可是在app中缺乏「繼續訪問不可信站點的設置」。
fiddler 是這樣解決的 ignore server certificate errors
referer的正確英語拼法是referrer因爲早期http規範的拼寫錯誤,爲了保持向後兼容就將錯就錯了,但也有新的網絡技術糾正此問題,因此拼法不一
最基本的寫法就是一個function函數
function FindProxyForURL(url, host) {
var lastPos;
var host_tmp = host;
var prefix = '*.';
do {
if (autoproxy_host.hasOwnProperty(host_tmp)) {
return 'PROXY proxy.oasec.mycomp-int.com:8080';
}
lastPos = host.indexOf('.') + 1;
host = host.slice(lastPos);
host_tmp = prefix.concat(host);
} while (lastPos >= 1);
return 'DIRECT';
}
複製代碼
本想用工具快速處理一下代理,作個靜態頁面映射方案,但靜態資源依賴邏輯工具是不能提供的,即便用工具的一些規則實現了靜態資源定位成本也是至關高。 因此仍是要寫一個服務像webpack-dev-server。
很是完整charles教程 不要本身瞎研究,這篇以及內容連接已經整理的很是好