- Forever Young https://www.luxiyue.com/tag/代理/ Share Happiness,Enjoy Life~ Thu, 20 Apr 2023 04:23:23 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.3 https://www.luxiyue.com/wp-content/uploads/cropped-lovely-ina512-1-1-150x150.png - Forever Young https://www.luxiyue.com/tag/代理/ 32 32 Whistle代理工具实践操作 https://www.luxiyue.com/personal/whistle%e4%bb%a3%e7%90%86%e5%b7%a5%e5%85%b7%e5%ae%9e%e8%b7%b5%e6%93%8d%e4%bd%9c/ https://www.luxiyue.com/personal/whistle%e4%bb%a3%e7%90%86%e5%b7%a5%e5%85%b7%e5%ae%9e%e8%b7%b5%e6%93%8d%e4%bd%9c/#respond Thu, 20 Apr 2023 04:23:23 +0000 https://www.luxiyue.com/?p=5500 前言 之前介绍了 网络抓包和代理工具:Whistle,并没有实践操作。 产生这个想法也是因为之前迅雷账号被封的事情,猜想大概率是因为异地登录的原因,主要也是平常我都是开的全局代理,吃一堑长一智,下次可能我的其他网盘也会因为这个原因被封,所以准备搭建个代理这样通过局部代理的方式来使用。 需求 一台公网电脑或者服务器 安装 安装流程可以查看我之前那个文章,这边再简单说一下我的过程: 安装Nodejs […]

Whistle代理工具实践操作最先出现在Forever Young

]]>
前言

之前介绍了 网络抓包和代理工具:Whistle,并没有实践操作。

产生这个想法也是因为之前迅雷账号被封的事情,猜想大概率是因为异地登录的原因,主要也是平常我都是开的全局代理,吃一堑长一智,下次可能我的其他网盘也会因为这个原因被封,所以准备搭建个代理这样通过局部代理的方式来使用。

需求

  • 一台公网电脑或者服务器

安装

安装流程可以查看我之前那个文章,这边再简单说一下我的过程:

  1. 安装Nodejs

  2. 手动安装Whistle

    npm install -g whistle
  3. 启动

    w2 start -n yourusername -w yourpassword -p 555

    用户名为 yourusername,密码为 yourpassword,端口为 555

  4. 放行端口

    这一步很重要,服务器阻止该端口的话,是无法连接的

使用

电脑端的SwitchyOmega浏览器插件

  1. 添加代理服务器

  2. 启用插件

  3. 访问 ip.cn 确认

    可以看到IP地址和服务器的地址一致,即成功。

iOS手机端

需要手机连接WiFi,点击WiFi右侧感叹号进行配置。

  1. 添加代理

  2. 保存后访问 ip.cn 确认,IP地址已经与服务器地址一致

总结

意想不到的好用,几个命令就可以搭建代理,比OpenVPN这类软件简单的多。

而且使用自己服务器的话,就不担心数据安全问题。如果是国外服务器,搭建个代理访问google或者ChatGPT之类的,还是比较不错的。

也支持https以及socks代理,官网有非常详细的配置教程。

Whistle代理工具实践操作最先出现在Forever Young

]]>
https://www.luxiyue.com/personal/whistle%e4%bb%a3%e7%90%86%e5%b7%a5%e5%85%b7%e5%ae%9e%e8%b7%b5%e6%93%8d%e4%bd%9c/feed/ 0
网络抓包和代理工具:Whistle https://www.luxiyue.com/personal/%e7%bd%91%e7%bb%9c%e6%8a%93%e5%8c%85%e5%92%8c%e4%bb%a3%e7%90%86%e5%b7%a5%e5%85%b7%ef%bc%9awhistle/ https://www.luxiyue.com/personal/%e7%bd%91%e7%bb%9c%e6%8a%93%e5%8c%85%e5%92%8c%e4%bb%a3%e7%90%86%e5%b7%a5%e5%85%b7%ef%bc%9awhistle/#respond Fri, 14 Apr 2023 03:27:25 +0000 https://www.luxiyue.com/?p=5435 简介 Whistle 是基于 Node 实现的跨平台抓包调试工具,其主要特点: 完全跨平台:支持 Mac、Windows 等桌面系统,且支持服务端等命令行系统 功能强大(理论上可以对请求做任意修改): 支持作为 HTTP、HTTPS、SOCKS 代理及反向代理 支持抓包及修改 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求 支持重放及构造 HTTP、HTTPS、HTTP2、We […]

网络抓包和代理工具:Whistle最先出现在Forever Young

]]>
简介

Whistle 是基于 Node 实现的跨平台抓包调试工具,其主要特点:

  1. 完全跨平台:支持 Mac、Windows 等桌面系统,且支持服务端等命令行系统

  2. 功能强大(理论上可以对请求做任意修改):

    • 支持作为 HTTP、HTTPS、SOCKS 代理及反向代理

    • 支持抓包及修改 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求

    • 支持重放及构造 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求

    • 支持设置上游代理、PAC 脚本、Hosts、延迟(限速)请求响应等

    • 支持查看远程页面的 console 日志及 DOM 节点

    • 支持用 Node 开发插件扩展功能,也可以作为独立 npm 包引用

  3. 操作简单:

    • 直接通过浏览器查看抓包、修改请求

    • 所有修改操作都可以通过配置方式实现(类似系统 Hosts),并支持分组管理

    • 项目可以自带代理规则配置并一键设置到本地 Whistle 代理,也可以通过定制插件简化操作

功能可以说是非常强大。可能作为代理服务器使用的需求会多一些。

Whistle 官网:https://wproxy.org/whistle/

Whistle 的 GitHub:https://github.com/avwo/whistle

Whistle 安装启动

一键安装

一键安装只支持 Mac & Windows 系统,其它系统按照下面 手动安装 的方式操作。

已安装 brew 的 PC,可以省略以下 1、2 步骤,直接通过以下方式一键安装:

brew install whistle && w2 start --init

arm64 平台尝试用:

brew install node && npm i -g whistle && w2 start --init
  1. 安装 Node(建议安装最新的 LTS 版本,如已安装忽略此步骤):Node.js官网

  2. 一键安装,在命令行执行以下命令:

    npm i -g whistle && w2 start --init

    上述命令会先全局安装 Whistle 的 npm 包后,启动 Whistle 并设置系统全局代理,以及安装系统根证书

    如果安装过程时报错 Bad CPU type in executable,在命令执行 arch -x86_64 zsh 再重新执行一键安装命令。

  3. 一键安装过程中注意事项:

    • Mac 需要两次输入开机密码或指纹验证

    • Windows 需要最后点击 “是(Y)” 确认

如果需要自定义代理配置或根证书(如设置其它代理,根证书或代理白名单等)可以通过以下命令实现:

w2 proxy 设置系统全局代理:https://wproxy.org/whistle/proxy.html

w2 ca 设置系统根证书:https://wproxy.org/whistle/proxy.html

手动安装

手动安装过程需要以下步骤:

  • 安装Node

  • 安装whistle

  • 启动whistle

  • 配置代理

  • 安装根证书

1.安装Node

访问Node.js官网,根据自己系统进行安装即可

2.安装whistle

npm install -g whistle

npm默认镜像是在国外,有时候安装速度很慢或者出现安装不了的情况,如果无法安装或者安装很慢,可以使用taobao的镜像安装:

npm install cnpm -g --registry=https://registry.npmmirror.com
cnpm install -g whistle

或者直接指定镜像安装:
npm install whistle -g --registry=https://registry.npmmirror.com

whistle安装完成后,执行命令 whistle helpw2 help,查看whistle的帮助信息

3.启动whistle

最新版本的whistle支持三种等价的命令 whistlew2wproxy

启动whistle:

w2 start

如果要防止其他人访问配置页面,可以在启动时加上登录用户名和密码 -n yourusername -w yourpassword

w2 restart      #重启whsitle
w2 stop         #停止whistle
w2 run          #调试模式启动whistle(主要用于查看whistle的异常及插件开发)

启动完whistle后,最后一步需要配置代理。

4. 配置代理

这一步就是根据上面的信息进行本地配置了。可以根据相应的代理软件或者插件配置即可。

可以参考之前我推荐的两个应用:SwitchyOmega扩展Brooks

配置信息:

代理服务器:127.0.0.1 (如果部署在远程服务器或虚拟机上,改成对应服务器或虚拟机的ip即可)

默认端口:8899 (如果端口被占用,可以在启动时通过 -p 来指定新的端口,更多信息可以通过执行命令行 w2 help (v0.7.0及以上版本也可以使用w2 help) 查看)

如果配置完代理,手机无法访问,可能是whistle所在的电脑防火墙限制了远程访问whistle的端口,关闭防火墙或者设置白名单

移动端调试神器:eruda

手机连接代理时,如何看console.log的日志信息?

现在,代码里有console.log,如果是在电脑浏览器上看,可以直接在控制台查看console.log的内容。但是,如果手机连接代理,在手机上打开网页的话,要怎么查看console.log的内容呢?具体做法如下:

1.在 whistle中,新建一个名叫Eruda H5的代理,代理中的内容是:

http://xxx.com htmlAppend://{eruda.html}

2.新建一个values,里面的内容是:

<script src="//cdn.bootcss.com/eruda/1.4.3/eruda.min.js"></script>
<script>
    eruda.init()
</script>

然后就OK了。

网络抓包和代理工具:Whistle最先出现在Forever Young

]]>
https://www.luxiyue.com/personal/%e7%bd%91%e7%bb%9c%e6%8a%93%e5%8c%85%e5%92%8c%e4%bb%a3%e7%90%86%e5%b7%a5%e5%85%b7%ef%bc%9awhistle/feed/ 0
iPhone、iPad使用SOCKS5代理 https://www.luxiyue.com/personal/iphone%e3%80%81ipad%e4%bd%bf%e7%94%a8socks5%e4%bb%a3%e7%90%86/ https://www.luxiyue.com/personal/iphone%e3%80%81ipad%e4%bd%bf%e7%94%a8socks5%e4%bb%a3%e7%90%86/#respond Wed, 22 Mar 2023 04:06:12 +0000 https://www.luxiyue.com/?p=4582 前言 之前在发布 一种另类的翻墙方式,使用浏览器代理访问国外网站 这篇文章的时候,就一直在想iPhone或者iPad上面有没有一款app可以支持SOCKS5协议代理访问国外网站。 于是,经过几番寻找之后,还真的找到了这样一款app。这边就给大家分享一下。 介绍 软件名称为:Brook Github地址:https://github.com/txthinking/brook 它支持众多平台,Wind […]

iPhone、iPad使用SOCKS5代理最先出现在Forever Young

]]>
前言

之前在发布 一种另类的翻墙方式,使用浏览器代理访问国外网站 这篇文章的时候,就一直在想iPhone或者iPad上面有没有一款app可以支持SOCKS5协议代理访问国外网站。

于是,经过几番寻找之后,还真的找到了这样一款app。这边就给大家分享一下。

介绍

软件名称为:Brook

Github地址:https://github.com/txthinking/brook

它支持众多平台,Windows 、Linux 、 Android 、IOS。(IOS需要在非大陆地区才能在App Store中搜到)

没有美区账号的话,可以查看我前面的文章:注册美区Apple ID

使用

1. 安装

在App Store中搜索 Brook

2. 在网上搜索SOCKS5代理

这边推荐2个网站(可能需要翻墙才能访问,如果不能访问,直接看下一步)

http://free-proxy.cz/zh/proxylist/country/KR/socks5/ping/all已无法访问

https://cn.proxy-tools.com/proxy/socks

3. 打开 Brook,添加代理

  1. 点击右上角的 +

  2. 选择 socks5 server ,下面填写 服务器地址和端口,点击 添加

推荐两个常用的地址: 125.143.142.228:1080 / 125.143.142.188:1080

4. 回到主界面,点击连接即可

总结

这是我见过非常良心的程序了,使用起来非常简单,还提供一些其他功能,需要的可以自行研究。

但是使用网上搜来的免费代理的话,还请遵守国内的政策法规,不要做违法事情,以及注意信息安全。

iPhone、iPad使用SOCKS5代理最先出现在Forever Young

]]>
https://www.luxiyue.com/personal/iphone%e3%80%81ipad%e4%bd%bf%e7%94%a8socks5%e4%bb%a3%e7%90%86/feed/ 0
用代理自动配置文件pac给ios设备添加socks代理 https://www.luxiyue.com/personal/%e7%94%a8%e4%bb%a3%e7%90%86%e8%87%aa%e5%8a%a8%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6pac%e7%bb%99ios%e8%ae%be%e5%a4%87%e6%b7%bb%e5%8a%a0socks%e4%bb%a3%e7%90%86/ https://www.luxiyue.com/personal/%e7%94%a8%e4%bb%a3%e7%90%86%e8%87%aa%e5%8a%a8%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6pac%e7%bb%99ios%e8%ae%be%e5%a4%87%e6%b7%bb%e5%8a%a0socks%e4%bb%a3%e7%90%86/#respond Sun, 05 Mar 2023 13:18:43 +0000 https://www.luxiyue.com/?p=4299 前言 在linux上运行了socks5的代理客户端之后,发现我的iphone在局域网的详细信息里竟然无法设置socks代理,只有http代理,而我的代理客户端又不支持http代理,所以找了下iphone上设置socks代理的方法。 方法 HTTP Prxoy 有3种模式: 关闭Off / 手动Manual / 自动Auto 用自动配置文件,就可以支持socks代理: function FindPr […]

用代理自动配置文件pac给ios设备添加socks代理最先出现在Forever Young

]]>
前言

在linux上运行了socks5的代理客户端之后,发现我的iphone在局域网的详细信息里竟然无法设置socks代理,只有http代理,而我的代理客户端又不支持http代理,所以找了下iphone上设置socks代理的方法。

方法

HTTP Prxoy 有3种模式: 关闭Off / 手动Manual / 自动Auto

用自动配置文件,就可以支持socks代理:

function FindProxyForURL(url, host){
    return "SOCKS proxy_host:proxy_port";
}

将上面的 proxy_hostproxy_port 换成socks服务器实际的IP地址和端口,然后保存为 proxy.pac ,上传到服务器,比如 https://www.yydnas.cn/proxy.pac

在iPhone设备中,添加自动配置 URL 为上面的地址,就可以使用socks代理了。

拓展

function FindProxyForURL(url, host){
    if (isInNet(host, "192.168.1.0", "255.255.255.0"))
        return "DIRECT";
    return "SOCKS proxy_host:proxy_port";
}

一个PAC文件包含一个JavaScript的函数 FindProxyForURL(url, host),这个函数返回一个包含一个或多个访问规则的字符串。

用户代理根据这些规则适用一个特定的代理其或者直接访问。 当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自发现协议(Web Proxy Autodiscovery Protocol)自动配置的。

为了完整性和最佳的兼容性,我们应该设置网页服务器(apache或者nginx,lighttpd等等)将这个pac文件的 MIME类型 声明为 application/x-ns-proxy-autoconfig 或者 application/x-javascript-config

对于现代浏览器来说,两种mime类型都没有问题, 但 application/x-ns-proxy-autoconfig 相对 application/x-javascript-config 被更多的客户端所支持,因为它被定义在最初的Netscape规范里。

FindProxyForURL 的返回值,可以是以下3种之一,或者是它们的组合:

DIRECT
        //直接连接,不使用代理

PROXY host:port
        //使用指定的http代理

SOCKS host:port
        //使用指定的SOCKS代理

如果是多个组合,要用分号 ; 拼接起来,并且,放在最左边的优先级最高,如果最左边的失败,依次往右边尝试。

如果最左边的代理服务器挂掉了,并且你在右边没有指定 DIRECT 选项,浏览器应该会问你:代理服务器挂了,能不能临时忽略它,直接连接网络?

  • shExpMatch(str, shexp)

    第1个参数 str ,待比较的任意字符串,一般是 url 或者 host

    第2个参数 shexp 是shell表达式,随意可以有*号通配符

  • isPlainHostName(host)

    如果 host 是不含有 . ,说明是一个主机名,就返回true

    如果有点号,说明是一个域名,返回 false

    host是从URL中分离出来的主机名(不包括端口号)

  • isInNet(host_or_ip, pattern, mask)

    这个函数将会考察第1个参数ip地址 (如果传入的参数是主机名,会被自动转换为ip地址)

    看它是否在第2个参数 pattern 和第3个参数 mask 决定的子网络范围内

    例如:

    if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
        return "DIRECT";
    if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
        return "PROXY 10.10.5.1:8080";

    其中 myIpAddress() 返回浏览器所在的主机的当前IP地址,很多时候这是个局域网地址。

    dnsResolve(host) 将host解析为ip地址

    var resolved_ip = dnsResolve(host);
    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";
  • dnsDomainIs(host, domain)

    if (dnsDomainIs(host, ".google.com"))
        return "DIRECT";

    其中host是从URL分离出来的主机名

  • localHostOrDomainIs(host, hostdom)

    if (localHostOrDomainIs(host, "www.google.com"))
        return "DIRECT";

    hostdom 是域名全称

    host 既可以是域名,也可以是简短主机名

    如果是域名,必须完全同 hostdom 匹配

    如果是主机名,必须同 hostdom 的主机名要完全匹配

  • isResolvable(host)

  • dnsResolve(host)

  • dnsDomainLevels(host)

    dnsDomainLevels("www")
        返回 0
    
    dnsDomainLevels("www.netscape.com")
        返回 2

调试问题

PAC是一个javascript脚本,浏览器在每次请求一个URL之前,都会运行它,但它和普通的js脚本有点不同:

  1. 在PAC中,有个几个特殊的函数,它只能在PAC运行,在普通的js脚本运行会报告 is not defined ,比如 shExpMatch;

  2. PAC的执行,也不支持js的所有特性;

  3. 在不同的浏览器中,对pac脚本的执行有着不同的实现方式:可以用Firefox的错误控制台来查看错误信息;IE也支持alert(),并且pac文件可以存在于本地文件系统,用 file:///var/run/x.pac 这样的路径,而不用 http ,方便调试

function FindProxyForURL(url, host){
        if (isPlainHostName(host) || dnsDomainIs(host, ".mydomain.com"))
            return "DIRECT";
        else if (shExpMatch(host, "*.com"))
            return "PROXY proxy1.mydomain.com:8080; " +
                    "PROXY proxy4.mydomain.com:8080";
        else if (shExpMatch(host, "*.edu"))
            return "PROXY proxy2.mydomain.com:8080; " +
                    "PROXY proxy4.mydomain.com:8080";
        else
            return "PROXY proxy3.mydomain.com:8080; " +
                    "PROXY proxy4.mydomain.com:8080";
}

最终版本:

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,"*facebook*") ||
        shExpMatch(url,"*blogspot*") ||
        shExpMatch(url,"*youtube*") ||
    )
    return "SOCKS 1.2.3.4:1080; DIRECT";
}

Chrome在Linux下没有代理配置界面,但可以通过命令行参数配置:

--proxy-server=host:port
--no-proxy-server
--proxy-auto-detect
--proxy-pac-url=URL
pac就用
--proxy-pac-url=file:///var/run/autoproxy.pac

新的浏览器支持正则表达式,如果需要做一些较为复杂的判断,那可直接抛弃 shExpMatch 函数,而自己使用正则表达式或别的工具来进行判断,如:

var regexpr = /[a-zA-Z]{4}.microsoft.com/;
    if(regexpr.test(host))
        return "PROXY w3proxy:8080; DIRECT";

调试,使用alert,在IE上没问题:

function isMatchProxy(url, pattern) {
    try {
        return new RegExp(pattern.replace('.', '.')).test(url);
    } catch (e) {
        return false;
    }
}

function FindProxyForURL(url, host) {
    debugPAC ="PAC Debug Informationn";
    debugPAC +="-----------------------------------n";
    debugPAC +="Machine IP: " + myIpAddress() + "n";
    debugPAC +="Hostname: " + host + "n";
    if (isResolvable(host)) {
        resolvableHost = "True"
    } else {
        resolvableHost = "False"
    };
    debugPAC += "Host Resolvable: " + resolvableHost + "n";
    debugPAC += "Hostname IP: " + dnsResolve(host) + "n";
    if (isPlainHostName(host)) {
        plainHost = "True"
    } else {
        plainHost = "False"
    };
    debugPAC += "Plain Hostname: " + plainHost + "n";
    debugPAC += "Domain Levels: " + dnsDomainLevels(host) + "n";
    debugPAC += "URL: " + url + "n";
    alert(debugPAC);
    var Proxy = 'SOCKS 1.2.3.4:9625; DIRECT';

    var list = [
        't.co',
        'twitter.com',
        'twimg.com',
        'posterous.com',
        'tinypic.com',
        'twitpic.com',
        'bitly.com',
        'yfrog.com',
        'youtube.com',
        'facebook.com',
        'appspot.com',
        'dropbox.com',
        'flickr.com',
        'youtube.com',
        'ytimg.com',
        'plus.google.com',
        'ggpht.com',
        'talkgadget.google.com',
        'picasaweb.google.com',
        'googleusercontent.com',
        'hzmangel.info',
        'slideshare.net',
        'code.google.com',
        'golang.org',
        'vimeo.com',
        'wordpress.com',
        'dxtl.net',
        '123cha.com'
    ];

    for(var i=0, l=list.length; i<l; i++) {
        if (isMatchProxy(url, list[i])) {
            alert("Match");
            return Proxy;
        }
    }

    alert("direct");
    return 'DIRECT';
}

在PAC中,Firefox和Internet Explore都支持alert语句,IE的表现同普通js一样,Firefox是在浏览器控制台( Ctrl+Shift+J 快捷键调出来)JS标签里显示出来。

[21:32:29.568] PAC-alert: PAC Debug Information
———————————–
Machine IP: 192.168.1.99
Hostname: xxxx.xxx
Host Resolvable: True
Hostname IP: 199.188.204.95
Plain Hostname: False
Domain Levels: 1
URL: http://xxxx.xxx/

由于.pac 文件支持整个 JavaScript 语言,可以使用正则表达式对象,并测试方法来测试对照正则表达式的字符串。下面的代码示例演示如何使用 .pac 文件中的正则表达式对象:

function FindProxyForURL(url, host){
    // For instance, if the server has 4 alphabetic characters,
    // such as "MSDN", route it through a specific proxy:
    var regexpr = /[a-zA-Z]{4}.microsoft.com/;
    if(regexpr.test(host))
        return "PROXY w3proxy:8080; DIRECT";

    // Or else connect directly:
    return "DIRECT";
}

SOCKS SOCKS4 SOCKS5的问题

SOCKS host:port

有的浏览器使用SOCKS4协议,也支持DNS解析(IceWeasel的代理管理,就是这个做法,但是SOCKS4实际上是不支持DNS解析的,SOCKS5服务看到协议版本是4,DNS请求是未知的,就会直接关掉连接

所以,在firefox里选中SOCKS4协议,就不要让 extensions.foxyproxy.socks_remote_dns 这个选项为 true ,但是,如果不做远程DNS的话,会污染DNS。

有的浏览器使用SOCKS4协议,但不支持DNS解析,有的浏览器直接使用SOCKS5协议,当然就支持DNS解析了 (foxyProxy扩展,看到SOCKS,就直接用SOCKS5了,相当聪明)

SOCKS5 host:port

明确说明要用SOCKS5代理。据说Safari (OSX, iOS)只认识SOCKS,虽然它默认也是使用SOCKS5协议。

SOCKS5 127.0.0.1:1080; SOCKS 127.0.0.1:1080; DIRECT

这种写法可以兼容绝大数浏览器,对于不认识的SOCKS5,丢掉,认识的SOCKS直接用。

原文来自:用代理自动配置文件pac给iphone和ipad设备添加socks代理

用代理自动配置文件pac给ios设备添加socks代理最先出现在Forever Young

]]>
https://www.luxiyue.com/personal/%e7%94%a8%e4%bb%a3%e7%90%86%e8%87%aa%e5%8a%a8%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6pac%e7%bb%99ios%e8%ae%be%e5%a4%87%e6%b7%bb%e5%8a%a0socks%e4%bb%a3%e7%90%86/feed/ 0