探索未知,记录点滴

Surge for mac:强大的网络调试工具

Spread the love

「长文慢读~」

本篇GitHub项目地址:传送门

经常使用iOS看世界的人应该对这款软件以及quan、小火箭和potatso不陌生,但是今天我们要讲的是Surge的mac版本。作为一款强大睾贵的网络调试工具,只用来看世界实在是大材小用了。在使用的过程中我也发现作为Surge一款电脑软件,有一定的门槛,也有一些出乎我意料的神奇用处。这一期就和大家分享一下我如何使用Surge~

简介、购买与安装

Surge经过不断地发展,现在已经到了Surge for mac 2以及for iOS 3的地步。价钱也是不断飞涨,从之前的近百元涨价到几百元不等。当然功能也是不断完善,站主开始使用的时候,Surge在某种程度上面已经成为mac不可替代的工具。几乎找不到哪一个工具能够集这么多功能于一体,给人这么舒适的体验。(外观党程序猿福利~)

Surge Mac提供和Surge iOS一样强大的功能。

它作为一个HTTP/SOCKS5代理服务器,安静的工作在macOS的菜单上,能够截取和记录网络请求,并将请求按照规则转发到其他代理服务器。支持HTTP/HTTPS/SOCKS5/SOCKS-TLS等协议。

附带的Surge Mac Dashboard可以通过Wi-Fi或者USB连接到Surge iOS,即使在iPhone使用数据网络时,你依然可以通过Mac去检查分析iOS上的网络流量。

  • Surge是什么?它如何工作?

Surge 是基于 Network Extension 开发的一款网络调试工具,工作原理是使用 Packet Tunnel Provider 给系统套上一个代理,Surge 有两个主要组件:Surge 代理服务器和 Surge TUN 接口,后者是2.0版本之后的新功能。程序运行之后,Surge 会将自身设置为默认的 HTTP/HTTPS 代理服务器来处理所有的 HTTP/HTTPS 流量。针对一些不服从系统代理设置(如 Mail.app)的应用程序 ,将由 Surge 的 TUN 接口来进行处理。(即增强模式)

Mac 版的 TUN 模式与 Surge iOS 版本的原理基本一致,对于所有来自 TUN 的 DNS 请求,都会返回一个 Fake IP(假 IP),从而让网络访问走自己的 TUN 通道,Surge Mac TUN 并没有声明为 default 路由,仅声明了 Fake IP 段,所以不影响其他的 IP 访问。不过也因为这种工作原理的原因,某些直接使用 IP 进行访问的应用 Surge 的 TUN 模式也无能为力。

简单来说,Surge 会接管全局的(几乎)所有通信,所有的http(s)流量都要通过Surge来代理,通过不同的代理规则决定这部分流量通过何种方式进入你的电脑或者直接被拦截在外而无法进入。这样,你可以构筑自己的防火墙,管理几乎所有进入你电脑的流量。下面这张图也很好的阐述了Surge是如何工作的:

《Surge for mac:强大的网络调试工具》


  • Surge for mac有哪些features?

1、高性能和稳定性:具有工业级稳定性,Surge能够以高性能持续运行,但它只占用最少的系统资源。它将完美处理所有流量,让你无后顾之忧。

2、灵活的规则系统:你可以根据域,IP CIDR,GEOIP等设置代理转发规则。Surge for mac将自动将请求发送到另一个代理服务器。

3、HTTPS解密:MitM可以解密HTTPS流量。证书生成器将帮助你生成用于调试的CA证书,并使证书受系统信任。

4、本地DNS映射:Surge支持本地定制的DNS映射。它的多个功能模块,包括通配符,别名和自定义DNS服务器,将能够满足各种需求。

5、代理组:你可以将多个代理分类为一个组,并根据分组使用策略。代理组可以配置为自动速度测试(根据基准测试URL访问速度选择策略),SSID(基于WiFi SSID选择策略)和手动选择。

6、HTTP重写:根据自定义规则将HTTP / HTTPS请求重写到另一个URL,或者只是阻止请求;

7、外部控制器:Surge可由远程机器通过surge-cli或Surge Dashboard进行管理。

8、完整的IPv6支持:自2.0.0版以来,所有功能都在IPv6环境中运行。


  • 我该怎么获得?

官网传送门

《Surge for mac:强大的网络调试工具》

在官网下载mac版本可以试用一个月,一个月之后决定是否要购买。但是看到睾贵的价钱…….打扰了,还是去py吧

《Surge for mac:强大的网络调试工具》

之前在贴吧和论坛看见有人找3人或者5人拼车,即使是这样,每个人还要缴纳100多软妹币。如果你只是想要去看世界还怕麻烦,建议不要考虑了,竞品很多还可以免费。万能的某宝因某些不可描述的原因也不能够买到。

很多人知道之前Surge在变得如此风靡一时之前,作者花了不少心思去优惠推广的,其中就有购买Surge 2 for iOS赠送一个for mac的license激活码。(现在好像没有了~)tg有很多人手里有,但是自己没有mac用不上,可以像站主一样找他们py低价购买。

土豪随意!


  • 安装

在官网购买,输入自己的邮箱地址,付款之后会有一封邮件发送到你的邮箱。得到license之后,官网下载Surge for mac最新版,点开之后会让你选择试用30天/输入license,选择后者,输入邮件中的信息。接着会收到“Surge已激活,感谢您的购买”的提示,即安装成功。

《Surge for mac:强大的网络调试工具》

 

《Surge for mac:强大的网络调试工具》

 

《Surge for mac:强大的网络调试工具》

门槛

前面说了,这个软件使用起来是有门槛的,因为客制化程度太高。根据你的需要,你可以写出不同的规则。另外,还需要理解一些概念。我相信对于那些经常自己出门看世界的人来讲不是大问题。

1、学会py/家里有矿,不解释(#滑稽)

2、有mac或者iOS设备,对于macOS的安装,黑苹果白苹果请随意,虚拟机勿扰。

3、理解几种代理方式:http/https/socks5,本站已经和著名搜索引擎百度达成了战略伙伴协议。

4、理解域名、域名后缀、二级域名、域名关键词、dns等概念

5、对流量抓包,证书有一定的理解。

DIY你的网络规则(仅适用于mac,iOS勿扰

  • General与代理(组)配置

怀着兴奋的心情,打开了刚刚购买的Surge,才发现作为一个“正式”的网路调试工具,它只支持socks5、http(s)等代理。http代理是明文代理,只能抓包用用,用它来看世界实在是石乐智。socks5的话可以在VPS上面搭建,但是考虑到已经有了天朝神器ss,我还是想找一个办法利用Surge用上它们。

转机:SSEncrypt.module文件

由于众所周知的原因,作者并没有加入ss这一功能,因此我们只好通过这个ss模块来实现功能了。大家可以在我的Github中找到它:传送门

之后,打开Surge的设置,找到配置里面的本地default.conf文件并打开。在该文件夹中,还有一个汉化的简易说明,感兴趣也可以看看。

这个diy的网络规则配置总共分为几部分,[General]、[Proxy]、[Proxy Group]、[Rule]、[Host]等。下面就来详细讲讲它们是做什么的以及如何配置。

请注意这里的socks5监听地址和端口就是你将来填写到tg代理以及其他支持socks代理软件(比如Spotify)当中的配置。端口可以自行设定,务必不要和本机已经使用的端口冲突。

顾名思义,Proxy是代理的意思,如果你有socks5代理,只要在设置当中的图形化界面填写即可。如果不想去配置socks或者压根没有自己的服务器而是用的别人的ss节点,请参考上述配置。

这里的ip填写你自己的服务器ip地址,端口加密协议和密码相信不需要多说了,所有配置用英文输入法填写。(什么?你问什么是ss?打扰了~)

后面的链接则是直接引入ss模块。请注意一个节点对应一行,填写顺序也要和后面的Proxy Group顺序相一致。这样一来,就像小飞机的「服务器配置」一样,我们配置好了自己的ss节点。

对于[Proxy Group],一共有三种策略组类型: “select“, “url-test” 和 “ssid

  • select: 具体哪个子策略将被使用,由用户界面上进行选择。
  • url-test: 具体哪个子策略将被使用,通过测试到具体 URL 的访问速度选择
        # url: 必填,测试时用到的目标 URL.
        # interval: 可选, 秒 (默认值: 600s),指定在多长时间后,上次的测试结果将被抛弃。
        # tolerance: 可选, 毫秒 (默认值: 100ms), 只有当新的优选线路,比原优选线路的响应时间,大于该值的时候,才会触发线路变更。相当于是一个开启线路变更的阈值。
        # timeout: 可选, 秒 (默认值: 5s),如果某策略在该时间后依然没有完成,放弃该策略。
  • ssid: 具体哪个子策略将被使用,根据 Wi-FI 的 SSID 决定
        # default: 必填, 默认策略。
        # cellular: 可选,在数据网络下的策略。 若不填,那么默认策略将被使用。
  • 示例:


  • 核心与灵魂:Rule

自用rule:传送门(按字母和类型整理,有屏蔽广告功能,dns请按自己喜好自行添加)

有了代理之后,我们仍然无法正常使用Surge来上网,因为没有网络规则,Proxy会代理一切网络请求。这样的话与全局模式并无差异,违背了我们想要pac模式的初衷。下面就为大家简单介绍下规则(rule)怎么写:

一个规则有三个基础部分:类型, , 策略

1、有三种基于域名的类型: “DOMAIN“(完整域名), “DOMAIN-SUFFIX” (域名后缀)和 “DOMAIN-KEYWORD“(域名关键词)。

2、有两种基于ip的类型: “IP-CIDR” and “GEOIP“,如果是一个使用域名进行访问的请求,那么 Surge 将进行 DNS 查询以确认是否应该被该规则匹配.。若 DNS 查询失败,将放弃规则匹配过程并直接给出错误。

3、值对应相应的类型,域名的话后面填写的值必须要域名,ip类型的话后面的值必须是ip。

4、有几种策略:

示例:

规则写完之后不要忘记在最后一行加上:FINAL,Proxy其他的走代理


  • 其他

[Hosts]相当于是本地本地 DNS 记录,该功能等同于 /etc/hosts,加上了泛解析和别名支持。

[URL Rewrite]

^http://www.google.cn http://www.google.com header

^http://yachen.com https://yach.me 302

该段定义针对 HTTP 请求的 URL 重定向规则,即当你打开一个URL时代理会自动帮你跳转到另一个URL。(个人感觉类似dns污染)

有两种重定向方式: “header” 和 “302

①Header 模式

Surge 会修改发出的 http header,必要时还会修改 Host 字段。客户端将感知不到这个重定向过程. 不支持重定向到一个 HTTPS 的地址。

302 模式

Surge 直接简单的返回一个302重定向回应。

拓展

1Terminal(终端)全局代理

众所周知小飞机也好Surge也好,规则模式以及全局代理针对的是浏览器,而对于终端,依然是直连国内网络。这样就给我们在终端里面安装homebrew等带来了困扰。现在配合Surge,可以实现让终端也用上代理。

「访达」—「前往文件夹」:~/.bash_profile。该文件是隐藏的,command+shift+. 即可显示。打开该文件,增加:

接着在终端里面输入:

这样我们即可在终端使用代理了,那么如何检验呢?

setProxy之后,我们输入:curl -i http://ip.cn或者curl -i http://cip.cc即可看见终端当前使用何网络。

《Surge for mac:强大的网络调试工具》

2、App使用socks5代理

有一些app提供了内置代理设置,ip填写本地ip127.0.0.1,端口填写Surge的socks5监听端口。如果没有内置的代理可以填写,我们就开启Surge的增强模式,类似于sstap,可以将强行代理软件。

注:使用增强模式前必须先配置 dns-server 参数,因为启动 TUN 后不能获取到系统的 DNS 配置,不管是 TUN 全局模式还是部分模式 dns-server 参数都是必需的。另外这个增强模式只能代理tcp流量,udp和icmp流量无法代理,周知。

3、本地流量情况实时监控

作为一个网络调试工具,打开控制台之后,经过mac的所有流量就会呈现在我们面前。并且告诉我们某个请求是经过什么样的方式(直连、代理),在我们电脑上面上传、下载的数据包大小,连接的时间等等。如果某个链接你不想让他在后台访问,可以右键制定规则屏蔽掉。同样的,某些应该直连却代理的网站(规则没写好),我们也可以同样操作让其实现直连。

4、iOS Http代理

打开Surge设置,找到https一项,点击「生成新证书」,接着点击「把证书安装到系统」。输入密码安装好证书之后,将右面的主机名设置成*即可。最后回到设置-通用,把http和socks5监听ip改为0.0.0.0

准备就绪之后,到mac设置-网络里面查看,找到本机的ip地址(路由器模式下面一般是196.168.1.x)并记录。

《Surge for mac:强大的网络调试工具》

打开iPhone,和电脑连接到同一个局域网下面,点击!号进入Wi-Fi配置,配置http代理。服务器填写mac的ip地址,端口填写Surge的http代理监听端口。打开Surge的控制台,在远程客户端就可以看见iOS上面的流量情况了,点击流量抓取即可抓取和监管流量。

注:iOS端勿使用VPN、ss等代理,否则不会显示。

《Surge for mac:强大的网络调试工具》

《Surge for mac:强大的网络调试工具》

但是http代理本身也有诸多弊端:

  • 代理协议本身不支持 UDP;
  • 很多设备不支持配置代理;
  • 部分支持配置代理的设备,也有很多流量不走代理;
  • 部分设备走代理会出现连接异常断开的问题(如 Apple TV 和 PS4);

还好surge for Mac为我们提供了gateway(网关模式):Surge for Mac之网关模式的妙用


写到这里该说的也都说的差不多了,完结撒花!

参考链接:

Surge官方文档:https://manual.nssurge.com/

Surge for Mac 简明指南:https://medium.com/@scomper/surge-for-mac-简明指南-f6f357b8f09c

让人耳目一新的 Surge Mac 2.0:https://medium.com/@scomper/耳目一新的-surge-mac-20-bb7cf735b1b8

打赏
支付宝二维码图片

支付宝扫描二维码打赏

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Recommended
「本篇只为分享个人经…