美文网首页
如何通过自动配置来设置代理

如何通过自动配置来设置代理

作者: 我是柯南 | 来源:发表于2018-07-06 09:43 被阅读198次

    目前科学上网(番羽土蔷)有以下几种方式,第 1,2 都相对简单,下文介绍第 3 种方法来设置代理。

    1. VPN 客户端,一般能直接接管系统中的代理设置,启动就直接设置好
    2. 手动设置代理服务器地址,在代理设置中手动输入代理的IP和端口
    3. 通过一个 PAC 文件来自动发现代理

    建一个代理服务器

    比如将 lantern 使用 headless 方式运行在个人私有云服务器上(如何无界面启动 lantern 请参见 https://www.jianshu.com/p/4aaf6354a13b),就创建了一个自己的代理服务器,lantern 运行的配置文件在 ~/.lantern/settings.yaml,配置文件如下,这样 64000 端口就是代理端口。地址可以通过动态域名绑定。

    addr: '[::]:64000'
    autoLaunch: true
    autoReport: true
    lang: ""
    localHTTPToken: *********************************
    pacURL: ""
    proxyAll: false
    socksAddr: 127.0.0.1:34805
    systemProxy: true
    uiAddr: 0.0.0.0:37115
    userID: 18904366
    userToken: *******************************************
    

    创建一个 proxy.pac 文件

    *.pac 文件内容其实就是 javascript 脚本,样例如下图,就是用来确定哪些请求使用代理,哪些不使用代理,手动创建一个 proxy.pac 文件,内容如下,存储到目录 /data/pac

    function FindProxyForURL(url, host)
    {
        url  = url.toLowerCase();
        host = host.toLowerCase();
    
        if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0")
          || isInNet(dnsResolve(host), "172.16.0.0",  "255.240.0.0")
          || isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")
          || isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")
        ) {
          return "DIRECT";
        }
    
        if (shExpMatch(url,"*twitter*")
          || shExpMatch(url,"*google*")
          || shExpMatch(url,"*facebook*")
          || shExpMatch(url,"*blogspot*")
          || shExpMatch(url,"*youtube*")
          || shExpMatch(url,"*gstatic*")
          || shExpMatch(url,"*ytimg*")
          || shExpMatch(url,"*ggpht*")
          || shExpMatch(url,"*github*")
        ) {
           return "PROXY yourname.com:64000";
        }
        return 'DIRECT';
    }
    

    将代理文件托管在一个站点上

    我们使用 nginx 服务器来反向代理一个静态网站,根路径就是上一步创建的 proxy.pac 文件所在的目录 /data/pac, 配置文件如下,这样通过外网就可以访问到这个 proxy.pac 文件,访问地址:http://yourname.com:65432/

    #####################################################################
    ## Default
    ## http://yourname.com:65432
    server {
           listen 65432;
           listen [::]:65432;
    
           server_name yourname.com;
           root /data/pac;
           index proxy.pac;
    }
    
    

    在浏览器上设置自动代理

    以下以 chrome 为例设置,其他浏览器或软件都类似。


    setting pac

    测试访问外网

    image.png

    相关文章

      网友评论

          本文标题:如何通过自动配置来设置代理

          本文链接:https://www.haomeiwen.com/subject/xthvuftx.html