charles替换远程 JS 文件

Charles 是一个特别优秀的代理工具,可以方便的实现本地文件代理,方便我们来调试远程的网址,下面就来介绍一下怎么配置 Charles 替换远程 JS。

启用 Tools > Map Local

如果不希望 webView 缓存网页的 JS,css 等,可以开启 Tools > No Cacheing, 这样每次都会重新请求这些资源。

添加规则 Add

我们以替换当前博客的某个 JS 文件为例,例如 http://apkfuns.com/assets/js/min/index.min.js?v=8478662b4d 我们该怎么写规则呢?

* 是通配符, Local path 是映射到本地的 JS 文件路径,在原内容基础下增加了 alert,内容如下:

function extractDomain(i) {  
    var o;
    return o = i.indexOf("://") > -1 ? i.split("/")[2] : i.split("/")[0], o = o.split(":")[0], o = o.replace("www.", ""), o = o.replace(".com", "")
}
$(document).ready(function () {
    alert("hook!");
    Pace.on("done", function (i) {
    }), (new WOW).init(), $(".site-main").fitVids(), $("#toggle").click(function () {
        $(this).toggleClass("active"), $("#overlay").toggleClass("open"), $("body").toggleClass("no-scroll")
    }), "undefined" != typeof social_icons ? $.each(social_icons, function (i, o) {
        $(".social-navigation ul").append('<li><a href="' + o + '">' + extractDomain(o) + "</a></li>")
    }) : $(".social-navigation").remove(), $(".scroll-top").click(function () {
        return $("html, body").animate({scrollTop: 0}, 600), !1
    })
});

保存后再次访问 apkfuns.com 就会弹出 alert 的内容了


设置本地 chrome 代理

  • 切记关闭本地其他代理,如 shadowsocks 等
  • 开启 proxy > Start Recording
  • 开启 proxy > macOS Proxy