让 iPhone iPad 连接的 wifi 能够使用 socks 代理
可以看到 iPhone 连接到 wifi 后修改 wifi 参数,只有设置 HTTP 代理
的选项,没有设置 SOCKS 代理
的功能。本文给出一种可以设置 SOCKS 代理的方法—— 编写PAC
文件并托管于静态文件服务器,实现通过一个 url 自动配置代理。
A proxy auto-config (PAC) file defines how web browsers and other user agents can automatically choose the appropriate proxy server (access method) for fetching a given URL.
来自 Wikipedia
SOCKS 代理
的层次比 HTTP 代理
更低 —— 它对应于 OSI 7 层模型的第 5 层【会话层】(session layer),而 HTTP 代理
服务于 OSI 7 层模型的第 7 层【应用层】(application layer),所以,socks 代理(尤其是 socks5)在使用起来更加具有通用性,也更方便。
关于 socks 代理的各个版本差异,详见 wikipedia
socks4、socks4a、socks5 区别一览 (来源)
在上篇文章的基础上,我的局域网配置好了 Clash Transparent Proxy,现在 http(s)、socks 都通过 mixed_port
监听在端口 7890
,设备 IP 是 10.10.10.4
。
下面开始几个细分步骤
一、编写 proxy.pac
文件
function FindProxyForURL(url, host) {
return "SOCKS 10.10.10.4:7890";
}
文件放在哪里稍候再确定,现在可以随便放,等会复制/移动过去就行。
我的使用场景下只需要如此简单的 function,要想了解更加复杂的功能和写法,可以参考 Mozzila 提供的代理自动配置文件(PAC)文件 这一页。
二、使用静态文件服务托管上述文件
我们选择局域网托管,就放在 n1 这台设备,刚好我有安装 nginx。看了一下 nginx 的配置,没有一个 server 块,80端口被其他服务占用。
我选择在 /etc/nginx/conf.d
下新建文件 static-files.conf
,然后编写此配置文件
server {
listen 82;
server_name 10.10.10.4;
charset gbk,utf-8;
location / {
root /home/dk/apps/nginx-files/;
index index.html index.htm;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
}
}
三、托管 proxy.pac
将上面写好的 proxy.pac
文件移动到 /home/dk/apps/nginx-files/
。
四、重载 nginx
nginx -t
nginx -s reload
五、测试以及正式使用
在 /home/dk/apps/nginx-files/
下编写了 index.html
<!DOCTYPE html>
<html>
<head>
<title>Title - Hello World!</title>
</head>
<body>
<h1>Hello World.</h1>
<p>hosted on phicomm n1 at 10.10.10.4:82.</p>
</body>
</html>
然后浏览器访问 http://10.10.10.4:82
将文件重命名一下,查看一下 nginx 的 autoindex
那些属性是否有生效
可以看到成功生效
原本 iPhone iPad 或其他安卓设备需要手动设置 n1 的 IP 以及代理端口。现在可以通过自动——输入 url 的形式让 iPhone 等客户端享受到 socks5 代理。
URL 里填写 http://10.10.10.4:82/proxy.pac
,实际上我局域网也有个性的域名映射到这个 IP,n1n1.to
,也可以使用 http://n1n1.to:82/proxy.pac
保存后验证,各个客户端都可以正常帆樯。
舒服了。
这个proxy.pac只返回了socks代理,甚至都没有用socks5。ipad在浏览器的http请求的时候会用得上,还是YouTube之类的用得上?还是所有wifi的流量都用得上?
写成 socks5 就可以了。要看应用是否从系统设置中读取这个配置,有些应用自带代理配置,比如 tg,比如 Spotify
那其实不算方便的方案,chrome和youtube都没法走隧道
我最后用了一个美站的免费app,potatso lite用vpn形式走代理来实现,这样所有app都能用了
感谢你的分享,恩人(☆ω☆)这两天刚入手一台iPad,正发愁不会饭墙呢。
要想用的爽还是得用专业的软件,比如小火箭或者 quanx