- 自动代理配置
- 代理HTTPS抓包
- HTTPS伪造/改包
- (TCP/UDP/ICMP)抓包
当前选择的网卡:

> 第一步： 点此在设备上安装HTTPS证书，并且信任！ 第二步： 设置系统代理 , 三选一 如下
> 1.(不推荐)普通完全代理IP地址: -> 全部请求都抓包!
> 2.(推荐)Pac筛选自动代理地址: PAC匹配域名抓包!
> 3.(懒人)配合设系统DNS 并设置Pac自动代理:

function FindProxyForURL (url, host) {
return "DIRECT";
}

# PAC自动代理示例脚本

    function FindProxyForURL(url, host) {
        // our local URLs from the domains below example.com don't need a proxy:
        if (shExpMatch(host, "*.example.com"))
        {
            return "DIRECT";
        }

        // URLs within this network are accessed through
        // port 8080 on fastproxy.example.com:
        if (isInNet(host, "10.0.0.0", "255.255.248.0"))
        {
            return "PROXY fastproxy.example.com:8080";
        }

        // All other requests go through port 8080 of proxy.example.com.
        // should that fail to respond, go directly to the WWW:
        return "PROXY proxy.example.com:8080; DIRECT";
    }123456789101112131415161718

# 主体

PAC脚本主体是一个FindProxyForURL的JS函数。函数的反回值有三类：

    function FindProxyForURL(url,host){
      if(host=="http://www.domain.com/") return "DIRECT";
      return "PROXY myproxy:80;PROXY myotherproxy:8080;DIRECT";

    }123456

# 函数

## isPlainHostName(host)

> 判断是否是本地主机

## dnsDomainIs(host,domain) localHostOrDomainIs(host,”“)

> 判断访问主机是否属于某个域和某个域名
> 示例：

    function FindProxyForURL(url, host){
        if ((isPlainHostName(host) ||
        dnsDomainIs(host, ".company.com")) &&
        !localHostOrDomainIs(host, "http://www.company.com/") &&
        !localHostOrDomainIs(host, "home.company.com"))

            return "DIRECT";
        else
            return "PROXY proxy:80";
    }1234567891011

## isResolvable(host)

> 主机名是否能被dns服务器解析

    function FindProxyForURL(url, host){
        if (isResolvable(host))
            return "DIRECT";
        else
            return "PROXY proxy:80";
    }1234567

## isInNet(host,”“,”“)

> 访问IP是否在某个子网内

    function FindProxyForURL(url, host){
        if (isInNet(host, "166.111.0.0", "255.255.0.0"))
            return "DIRECT";
        else
            return "PROXY proxy:80";
    }1234567

## shExpMatch(host,”“)

> 主机名判断

    function FindProxyForURL(url, host){
        if (isPlainHostName(host))
            return "DIRECT";
        else if (shExpMatch(host, "*.com"))
            return "PROXY comproxy:80";
        else if (shExpMatch(host, "*.edu"))
            return "PROXY eduproxy:80";
        else
            return "PROXY proxy:80";
    }1234567891011

## url.substring(0,n)

> 截取协议字符串

    function FindProxyForURL(url, host)
    {
        if (url.substring(0, 5) == "http:") {
            return "PROXY proxy:80";
        }
        else if (url.substring(0, 4) == "ftp:") {
            return "PROXY fproxy:80";
        }
        else if (url.substring(0, 7) == "gopher:") {
            return "PROXY gproxy";
        }
        else if (url.substring(0, 6) == "https:") {
            return "PROXY secproxy:8080";
        }
        else {
            return "DIRECT";
        }
    }123456789101112131415161718

## dnsResolve(host)

> 域名ip解析

    function FindProxyForURL(url, host)
    {if (dnsResolve(host) == "166.111.8.237") {return "PROXY secproxy:8080";
    }else {return "PROXY proxy:80";
    }
    }

    123456789

## myIpAddress

> 本地IP

    function FindProxyForURL(url, host){if (myIpAddress() == "166.111.8.238") {
        return "PROXY proxy:80";
    }else {
        return "DIRECT";
    }
    }

    123456789

## dnsDomainLevels(host)

> 几级域名

    function FindProxyForURL(url, host){
        if (dnsDomainLevels(host) > 0) { // if number of dots in host > 0
            return "PROXY proxy:80";
        }
            return "DIRECT";
    }1234567

## weekdayRange

> 星期几

    function FindProxyForURL(url, host){
        if(weekdayRange("WED", "SAT", "GMT"))
            return "PROXY proxy:80";
        else
            return "DIRECT";
    }1234567

## Math数学函数

> 通用js函数

    Math.floor(Math.random()*5)1