Pages

Friday, 6 November 2015

支持iOS9的收费翻墙程序-surge(够爽,它是个全局代理.我测试成功)

Surge 是一款开发者调试和代理工具,需要一定的专业背景知识才可使用,请在仔细阅读 App Store 说明且理解软件功能后再进行购买
2. 由于 Surge 的功能点众多,难免出现 Bug,但也很可能是因为网络问题引起的,在反馈 Bug 之前,请仔细确认自己的网络环境与代理服务器正常,最好能尝试出准确的复现步骤,给出相关的 URL 和 verbose 模式下的日志。
3. 目前 AppStore 上的 1.0.0 版本(Build 290)有以下几个问题:
  • 频繁网络切换后可能出现 DNS 失效的情况 (断开重连或者再次切换网络可解决)
  • 对部分应用的 POST 请求的兼容问题(如京东客户端)
1.0.1 版本已提交 App Store 审核,请耐心等待一下,抱歉。
5. 为感谢各位 TestFlight 参与者对 Surge 的支持和反馈,我会向给我反馈过 Bug (带有准确描述或日志)的测试用户赠送 Promo Code 一枚,待我整理统计后会通过邮件或 DM 发送(26日 之内)。(App Store 上架完毕后,App Store 自动停止了 TestFlight 分发,对各位测试者带来的不便请谅解)
6. Surge 承诺在至少 3 个月都不会降价促销,各位可以放心购买 XD
7. 隐私说明:Surge 自身仅会向以下 2 个服务器产生网络请求
  • Twitter 旗下的 Crashlytics 服务
  • Surge 中的 Manual,FAQ 和 Config Example 页面 (http://surge.run)
除以上 2 点外,Surge 不会主动产生任何网络请求(用户自己配置的代理服务器和本身的使用流量除外),从根本上不存在任何隐私问题。
购买直达链接:
在未来的几个版本中的新功能预告(当然肯定是免费更新)
  • 本地 DNS Map (等同于 /etc/hosts)
  • DNS 结果展示
  • Proxy Group,替代现在的 PROXY-OVERRIDE 功能,对于 Group 中的 Proxy 们,可以设置为启动前选择,或者是随机、顺序使用
  • HTTP 的 Body dump (包括对 JSON、图片等常见数据格式的显示支持)
  • ---------------





















Surge 新手使用指南

Surge 是基于 iOS 9 的新特性 Network Extension 开发的一款网络调试工具,工作原理是使用 Packet Tunnel Provider 给系统套上一个代理,Surge 有两个主要组件:Surge 代理服务器和 Surge TUN 接口。程序运行之后,Surge 会将自身设置为默认的 HTTP/HTTPS 代理服务器来处理所有的 HTTP/HTTPS 流量。针对一些不服从系统代理设置(如 Mail.app )的应用程序 ,将由 Surge 的 TUN 接口来进行处理。
Surge 会接管全局的(几乎)所有通信,所以所有网络方面的电量消耗都会被算在 Surge 头上,实际上 Surge 的运行功耗很少,使用中也不会感到 Surge 对电量有明显影响。

添加配置文件

打开 Surge,默认包含有一个 Default 的配置文件,点击右上角的编辑(Edit)可以打开了解配置文件的基本结构:日志模式(Log Level)的设定、代理服务器(Proxy)的设置以及规则(Rules)的设置。
一条一条添加内容是困难的,而且对刚接触这一块的用户来说也不明所以,所以简单的方法是从网上复制一份现成配置内容下来,保存成后缀为.conf 的文本(Uncode UTF-8)文件,最后连接数据线通过 iTunes 导入到 Surge中。




















配置文件中服务器的部分需要填写,如果不知道服务器的地址和端口是多少,不妨打开 GoagentX 停止服务后选择不同的服务器并查看具体地址,你既可以直接在 Surge 中填写,也可以直接编辑 .conf 配置文件最后再导入到 Surge。




















对于大多数人来说,基于范例文件编辑加上自己的服务器(Proxy)地址 Surge 就可以开始工作了。规则部分可以借鉴范例文件进行补充,规则并不是越多越好,除了利用 DNS 缓存对经常访问的网站进行加速外,仅需要补充本地 DNS 无法正常解析的域名到规则中。
如果您使用的是 HTTPS 代理,Surge 会校验服务器证书名称,请使用域名进行配置,不要直接使用 IP。

使用单独的服务器配置文件

配置文件的 Proxy 部分可以写入多个服务器地址,Surge 会将当前命名为「Proxy」的地址作为当前使用地址,这种方式每次想切换代理服务器时比较麻烦,例如我想使用香港代理服务器,需要找到 HK 条目,并将现有「 Proxy = 」中的 Proxy 改成别的名字,然后将「 HK = 」中的 HK 改成 Proxy,说起来都比较绕。
多个服务器切换更简单的方式是单独写「服务器配置覆盖文件」,在这种覆盖文件中只需要指向自定义配置的主文件(如图示中HK(HKG3).conf 第一行),然后写上服务器地址的部分(Proxy 定义部分)即可。




















主文件(如,Main.conf)是个独立的标准文件,所以其中 Proxy 部分是必须的,服务器覆盖配置文件(如,HK.conf、TYO.conf)中只写一个服务器地址,并且这个地址不需要和 Main.conf 的中 Proxy 部分形成对应关系,如果你打算使用 5 个服务器切换,Main.conf 的 Proxy 部分可以写 1 ,然后其他覆盖配置文件里分别写 2、3、4、5 的地址,在 Surge 主界面中选中哪个使用哪一个。
Main.conf (for SSLEdge)
[General]
# warning, notify, info, verbose
skip-proxy = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,localhost,*.local
bypass-tun = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
dns-server = 119.29.29.29,223.5.5.5,114.114.114.114
loglevel = notify

[Proxy]
# SSLEdge,自行修改 Proxy 中的服务器地址、端口、用户名、密码
Proxy = https,1.2.3.4,443,username,password

[Rule]
# 规则部分请参照范例补充完善,此处只列出几条示意
DOMAIN-KEYWORD,umeng.co,REJECT
DOMAIN-KEYWORD,google,Proxy,force-remote-dns

GEOIP,CN,DIRECT
FINAL,Proxy
Main.conf (for ShadowSocks)
[General]
# warning, notify, info, verbose
skip-proxy = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,localhost,*.local
bypass-tun = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
dns-server = 119.29.29.29,223.5.5.5,114.114.114.114
loglevel = notify
[Proxy]
# ShadowSocks,custom不要变,修改服务器地址、端口、加密方式、密码、Shadowsocks 模块URL
Proxy = custom,$IP,$PORT,$METHOD,$PASSWORD,$MODULE_URL
[Rule]
# 规则部分请参照范例补充完善,此处只列出几条示意
DOMAIN-KEYWORD,umeng.co,REJECT
DOMAIN-KEYWORD,google,Proxy,force-remote-dns
GEOIP,CN,DIRECT
FINAL,Proxy
🇭🇰HK(HKG3).CONF
#!PROXY-OVERRIDE:Main.conf

[Proxy]
Proxy = https,2.2.3.5,6556,username,password
🇯🇵JP(TYO2).CONF
#!PROXY-OVERRIDE:Main.conf

[Proxy]
Proxy = https,3.2.3.6,15560,username,password
SSLEdge 和 ShadowSocks 的差别只是 Proxy 代理服务器那一行,服务器覆盖配置中同理,SSEncrypt.module 模块的下载链接请自行 Google。
为了显示上的直观,图示服务器覆盖文件的文件名加入了表情符号(原生拼音输入法输入香港🇭🇰)。 Dropbox 目前还不支持同步文件名包含表情符号的文件,所以如果要传到 Surge 里请使用 iTunes 或 iCloud Drive 方式。

具体配置和规则





















# 通用设置
loglevel = notify
bypass-system = true
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local
bypass-tun = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
dns-server = 8.8.8.8, 8.8.4.4
  • 记录日志的几种方式: verbose、info、notify、warning。默认是 notify,分析(Analytics)模块中可以查看具体的 Logs,日志对分析 Surge 的使用状况很有帮助,打开具体日志能看到 Surge 的行为和动作,如果遇到异常情况可以打开具体日志并通过右上角的分享将日志通过邮件发送给作者
  • 除非是在调试 Bug 的时候,平时请不要启动 verbose 级别的日志,因为日志需要保证完整写入,使用的是同步式地写入,性能上会有严重问题
# 代理设置
[Proxy] 
Proxy = https,127.0.0.1,3120,username,password
ProxyA = socks5,127.0.0.1,3129
ProxyC = http,127.0.0.1,3120
  • 可以创建多个代理服务器条目,规则中可以指定某条规则走哪个代理
  • SSLedge 使用 HTTPS,老式 APNp 用 HTTP
  • Surge 支持 HTTP, HTTPS 和 SOCKS5 的代理服务器,当前仅 HTTP/HTTPS 代理支持验证(用户名、密码)
# 规则设置
[Rule] 
# 基于域名判断并屏蔽(REJECT)请求
DOMAIN,pingma.qq.com,REJECT

# 基于域名后缀判断屏蔽(REJECT)请求
DOMAIN-SUFFIX,flurry.com,REJECT

# 基于关键词后缀判断走代理(Proxy),强制不尊重系统代理的请求走 Packet-Tunnel-Provider
DOMAIN-KEYWORD,google,Proxy,force-remote-dns

# 基于域名后缀判断请求走直连(DIRECT)
DOMAIN-SUFFIX,126.net,DIRECT

# Telegram.app 指定“no-resolve”Surge 忽略这个规则与域的请求。 
IP-CIDR,91.108.56.0/22,Proxy,no-resolve 
# 判断是否是局域网,如果是,走直连
IP-CIDR,192.168.0.0/16,DIRECT
# 判断服务器所在地,如果是国内,走直连
GEOIP,CN,DIRECT

# 其他的走代理
FINAL,Proxy
规则配置的高级选项中,「Force Remote DNS」的作用主要是用来解决本地 DNS 解析受到污染的问题,在添加针对 Google、Twitter 的规则时可以开启。
规则按照顺序执行,注意不要出现先后矛盾的地方,同一个域名或后缀的规则定义不要重复,使用文本编辑器编辑时注意每条规则间的分隔逗号是英文标点。

高级设置中的选项





















最右侧的图是分析模块中的统计(Statistics)数据,可以直观的看到当前连接(Surge 断开后统计重置)的时长以及Wi-Fi 和蜂窝移动网络的流量使用情况。
主配置文件设置高级选项中的「Bypass System Related」不要关闭,Surge 通过这个开关和内置规则放行系统层面的通讯请求。如果禁用此选项,它可能会导致一些系统问题,如推送通知的延迟。
高级选项中的其他两项设置「SKIP PROXY」和「BYPASS TUN」是为了解决一些应用的兼容性问题,通过指定具体域名(apple.com或者*apple.com)或者 IP(192.168.2.* 或 192.168.2.0/24)让这类请求绕过 Surge 代理服务器和 TUN 接口。



















Skip Proxy 和 Bypass TUN 的功能与原理(By @Blankwonder )

Surge 能作为 DNS Client 使用,「DNS OVERRIDE」中填写的 DNS 地址将覆盖缺省的 DNS,针对较差的网络环境 Surge 能进行更高频率地重发,并同样适用于蜂窝数据网络,支持设置中(如:119.29.29.29,223.5.5.5,114.114.114.114)的多服务器并发查询。

分析网络活动

Surge 分析模块中能直观看到 Surge 启动后最近地访问请求(Recent Requests)。




















还可以通过规则结果测试(Rule Test Results)临时调整规则(点击某条记录),REJECT、DIRECT 或者指定它走某个代理。




















通过规则结果测试(Rule Test Results)可以方便地跟踪当前 App 的网络访问,临时改变规则后可以观察 App 的实际运行情况,如果有效随后就能补充到主配置文件中。
在 iPad 分屏模式的使用场景中,我经常干的一件事就是打开某个国产应用,然后分屏查看 Surge 里 Test Results 的网络访问情况,侦查那些和应用功能无关的隐私或广告请求,然后记录下来添加到自己的规则列表中。
如果说 Surge 最吸引人的地方在哪里,估计就是这种透明的网络访问方式,在轻松访问各种网络服务以外还是一个强有力地调试工具。安全和隐私已经变成只有少数人才能掌控的东西,学习掌握一款这样的工具还是很重要的。

常见问答

Q:为什么 Surge 一直显示是下载状态没有安装成功?
A:不能开启 Surge 的同时更新它自己,需要先停用 Surge,等更新完成后再打开 Surge。
Q:修改配置文件中的规则后会立即生效吗?
A:不会,需要到 Surge 中停止(Stop)后重新开始(Start)。
Q:Surge 的配置文件中的服务器该如何填写?
A:Surge 是一个网络调试工具,并不提供代理服务器,需要另行购买或自行搭建服务器,具体的服务器地址和端口可以咨询服务器提供商。
Q:如何快速启动或关闭 Surge ?
A:Surge 提供了通知中心扩展 Widget,加载后由通知中心就能快速切换 Surge 状态。如果使用 Launcher 这类软件,可以通过 URL Scheme 命令`surge:///toggle`来控制 Surge 的切换,更多命令参见 surge.run
Q:网上分享和供参考的配置中为什么规则都不一样 ?
A:配置文件中 [Rule] 的部分可以根据各自的使用环境进行定制,合并或借鉴时注意不要前后冲突或重复即可。
Q:如果遇到问题该如何反馈 ?
A:使用和配置上的问题可以访问非官方的 surge.tips 论坛交流探讨,提交 Bug 和 Feature Request 访问 Google 论坛 surge-chinese。邮件反馈请将日志类型改成 verbose (跟踪到问题即时停止,时间长度决定 Verbose日志的大小)发送到 surge-support@surge.run。提示:请替换日志中的代理服务器地址为 abc.com 以保护个人隐私

Surge 购买链接:美国区 App Store中国区 App Store 。
Surge 是一款开发者调试和代理工具,需要一定的专业背景知识才可使用,请在仔细阅读 AppStore 说明且理解软件功能后再进行购买。
后续版本可能还会有功能、界面上的变化,如有必要本文会进行补充和更新。
配置文件参考:Surge@scomper@Janlay@soffchen@jason5ng32
文章撰写过程中,浏览了作者@Yachen Liu 软件中的帮助以及推文,参考了 @Paveo 的《Surge, the missing tool for iOS》,在这里表示由衷感谢。
本文档适用于:Surge 1.0.1(Bulid 302)
http://surge.run/manual/
----------------------------------------------------------
Surge 原理与实现
为了方便各位购买了 Surge 的用户更好的理解 Surge 的功能,能够自己通过灵活修改配置以应对不同的需求,我写了这篇中文的 Surge 原理与实现供各位参考。




从 Surge 的几大核心组件分别说起吧:
1. Surge Proxy Server
这是 Surge 最核心的部分,用于处理所有的 HTTP/HTTPS 请求。用 Proxy 去处理请求而不是用 TUN,有很多原因,主要是因为 TUN 是工作在 IP Layer 的:
  • Proxy 可以直接收到包含域名 / URL 的请求,从而使基于域名的规则过滤成为可能(甚至 URL,之后版本可能考虑加入支持)
  • Proxy 可以省略不必要的 DNS 请求,对首次访问的速度提升相当明显
  • Surge 的 Proxy 支持全局的 HTTP Connection Keep Alive 机制,极大的减少了 TCP 握手产生的开销(跨应用间也能共享一个 TCP Connection,但由于内存限制在 iOS 版本上超时时间很短,之后 Mac 版本上的效果会明显一些)
  • 准确的记录下每个请求的 header 和 body(从 TCP 层面直接抓,可能会有误)
  • 使得之后的高级功能(如修改 header,rewrite URL)成为可能
  • 减少了不必要的 IP Packet 相关开销
  • 这样 Surge iOS 版本与 Mac 版本可以共享核心代码
这是 Surge 中最复杂的组件,基本上等同于一个不带 cache 的 squid,其中的难点一方面是调度问题,另一方面是怎么样去判断一个 HTTP 请求是否完成(比如 chunked transfer encoding),本身 HTTP RFC 在这方面就有非常多的细节问题,再加上很多自制的 HTTP Server 不是特别的遵守规范,所以只能通过大量的时间去积累经验完成。
2. DNS Client
最早的版本中,Surge 也是使用 getaddrinfo 这类的系统调用去进行 DNS 解析的,但是后来越来越不能满足需求,所以就又造了个轮子,有这些好处:
  • 可以完全自定义 upstream DNS 服务器地址,无视系统设置
  • 可以并发的向多个 DNS 服务器发出 question
  • 可以自定义超时和重发的策略
  • getaddrinfo 等方法本身不支持 cache
  • 为之后的 Local DNS Map 功能提供了基础
这部分的功能差不多是个 mini 版本的 dnsmasq 吧。由于是自己实现的,以后要做 TCP DNS 或者非 53 端口的支持都是很简单的事。
3. Surge TUN Interface
最早的版本没有这个组件,但有部分应用使用的是 HTTP/HTTPS 以外的 TCP 协议 (如 SPDY、IMAP),没有遵从代理设置,因此无法被 Surge 接管流量。为了解决这个问题,才加入了这个组件。
核心原理就是通过一个 Surge 内部的 TCP stack,将 IP Packet 中的 TCP 数据提取出来,再重新用 Proxy 进行请求(或者直接连接对应的服务器),再将返回的数据重新封装成 IP Packet。
正如前面提到的,用 TUN 处理请求会有一些问题,最大的问题是,由 TUN Interface 处理的流量,DOMAIN 相关的 Rule 会无效,除非使用了 force-remote-dns 选项。
这是由 TCP/IP 协议的特性所决定的,App 会先发出一个 DNS question,获取要连接的服务器的 IP 地址,然后直接向这个 IP 地址发起连接,所以有了第 4 个组件。
4. IP Layer DNS Forwarder
这个组件配合 TUN Interface 使用,会将收到 DNS 的 IP Packet,进行简单改动后直接转发给 upstream DNS。
但是在转发前,该组件会检查需要解析的域名,是否匹配上了带有 force-remote-dns 选项的规则,如果是,不进行转发,直接返回一个 240.1.x.x 的 fake IP。当 TUN Interface 收到一个发往 240.1.x.x 的包的时候,反向查出真正的域名是什么,然后直接以域名的形式转交给 Proxy,避免本地的 DNS 查询动作。
force-remote-dns 选项主要是为了解决有些域名在本地查询会有障碍的问题(如公司内网域名),然而因为返回了一个 fake IP,且 Surge 没有权限去强制清除系统或者应用的 DNS cache,所以在 Surge 关闭后可能导致一些问题,所以请谨慎的只给确实需要的域名开启这个选项。
其余还有一系列的 homemade 小组件(如各个协议的 client),就不一一描述了,之后想到什么再补充。
所以,看起来 $9.99 超值吧.
from https://medium.com/@Blankwonder/surge-原理与实现-8aa3304fb3bb,这是程序作者写的文章。
----------------------

Surge, the missing tool for iOS


iOS 9 有个激动人心的新特性 Network Extension 弥补了 iOS 长久以来无法定制底层网络 app 的不足。APN 代理不安全,成本高;虚拟专网速度不佳,爱掉线,阻塞问题严重...
那么对于专业用户来说比较完美的方案必须是安全的,可低成本的,最大网络速度,无连接状态,国内外分流完美的 iOS 方案,那么现在这个堕落的愿望已经实现了,感谢苹果公司这么给(chi)力(dao)的 API 和 app 开发大牛。
Surge.app (App Store)是一款给专业用户使用的网络调试工具,使用比较复杂。它的工作原理是使用 packet tunnel provider,然后给系统套上一个代理,后端转发支持 http 代理,SSL 代理,和 Socks 代理。如果 app 尊重系统代理,就会走这个代理,如果不尊重,我们也可以通过规则强制流量走系统 tun 设备达到支持全部 app 的目的。用代理的好处是可以跟踪和调试网络,容易分流,ACL 功能更多,弹性更大更方便。感觉安卓上都没有这么好用的 app 呐。。
简单的开始可以直接导入一份 conf 文件(URL 或者 iTunes),例如这里的,对于不求甚解的用户来说你可以直接使用完事(但是你还是要改改服务器地址用户名什么的。。或者直接从供应商处获取导入 URL)。
配置的结构大概是这样,对于专业用户来说,理解应该不难(Surge 还处于不断开发阶段,下面的配置已经过时。请关注 Surge 官方的消息和手册,或者 Surge.tips 网站):
[General]
# warning, notify, info, verbose
loglevel = notify

[Proxy]
# http, https, socks5
# SSLedge 使用 https,老式 APNp 用 http
Proxy = https, server, port, username, password, ciphers 

[Rule]
# 域名关键字,干掉不想要的请求
DOMAIN-KEYWORD,umeng.co,REJECT  
...

# 常用网站优先匹配,加快速度。使用代理转发,完全没有 CDN 被干扰的问题~
DOMAIN-SUFFIX,cn,DIRECT  
DOMAIN-SUFFIX,qq.com,DIRECT  
DOMAIN-SUFFIX,ls.apple.com,DIRECT  
DOMAIN-SUFFIX,apple.com,Proxy  
...

# 强制这些不尊重系统代理的请求走 packet-tunnel-provider,解决 Twitter.app 和 Mail.app 收发邮件问题
DOMAIN-KEYWORD,twitter,Proxy,force-remote-dns  
DOMAIN-KEYWORD,gmail,Proxy,force-remote-dns  
# instagram.app 也没问题
DOMAIN-KEYWORD,instagram,Proxy,force-remote-dns  
# Telegram.app 也没问题
IP-CIDR,91.108.56.0/22,Proxy,force-remote-dns  
...

# LAN
IP-CIDR,192.168.0.0/16,DIRECT  
...

# 其余的请求使用 GEOIP 判断服务器所在地,如果是国内的,走直连,搞定
GEOIP,CN,DIRECT

# 最后 Matchall,丢给代理
FINAL,Proxy  
通过规则定义和组合,必然可以满足专业用户的需求,非常强大。配置可以使用 app 自带的 GUI,当然也有文本编辑方式。
由于 Surge 的核心和是个 http proxy,有些处理不了的请求我们可以强制 bypass(proxy-skip/tun-bypass) 掉,走系统接口,这个可以在代理设置-高级处设置,如果你不太懂,请不要随意设置。
方便查看调试记录当然得靠很骚的 3D touch 菜单了。。
Log 显示,看到了吗,IMAP 也可以走代理 XD 对已迫切想知道系统访问历史的同学来说是不是很赞?
还可以更改规则,干掉不想要的访问,专治流氓 app。
搭配加速的 SSLedge 速度还算不错。
由于目前 iOS 系统对内存限制较严格,SSLedge 代理推荐使用 TLS_RSA_WITH_AES_128_GCM_SHA256 ciphers,使用这个后 Surge 的崩溃问题就比较少了(1.0.1后不需要)。
自从有了 Surge,微信、煎蛋刷起来不卡了,看油条速度杠杠的,下载 app 更新没有压力,妈妈和库克再也不用操心了...更主要的是,你可以随时切换线路,不用担心国内中转质量变坏...
更多的使用技巧和高级功能请关注 Surge.tips 网站
-------------------------------------

Surge -支持Shadowsocks

Surge已经上架,赶紧去看了看。中国¥68,美国$9.9,我是香港的HKD$78,不管多少,先入手一个.
进入Surge,界面清爽易懂,点赞!
可以统计走代理的URL和数量。
我们先添加一个Conf,支持从iCloud上拉取,也支持从Url下载还能通过iTunes传送。

这边我因为要使用Shadowsocks进行分流上网,所以要自己编辑conf。选择文本形式进行编辑,按照官方的说法,我们应该如下编辑
[General]
# warning, notify, info, verbose
bypass-system = true
skip-proxy = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,localhost,*.local
bypass-tun = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
dns-server = 119.29.29.29,223.5.5.5,114.114.114.114
loglevel = notify
[Proxy]
# ShadowSocks,自行修改 Proxy 中的服务器地址、端口、用户名、密码。
xyz = custom, vps_ip, ss_port_no, 加密方式, 你的密码, https://github.com/luckypoem/Surge-config/raw/master/SSEncrypt.module
[Rule]
# 规则部分请参照范例补充完善,此处只列出几条示意
DOMAIN-KEYWORD,umeng.co,REJECT
DOMAIN-KEYWORD,google,Proxy,force-remote-dns
GEOIP,CN,DIRECT
FINAL,xyz
经过实测发现http://surge.run/SSEncrypt.module这个下载地址已经失效(建议发信息给作者,要求其发送SSEncrypt.module文件到你的邮箱)
点击右上角done保存.(点击2次!然后会收到提示:“安装SSEncrypt.module模块”,点击“确定”

让我们开始翻墙浏览互联网吧.
from https://www.andy1999.com/archives/803

SSEncrypt.module的其他下载地址:
https://github.com/ConnersHua/SSEncrypt/raw/master/SSEncrypt.module
https://github.com/moreoronce/SSEncrypt.module/raw/master/SSEncrypt.module
https://github.com/spinshen/Surge/raw/master/SSEncrypt.module
https://github.com/galaxysd/GalaxyCodeBases/raw/master/etc/Surge/SSEncrypt.module
https://github.com/lhie1/Rules/raw/master/SSEncrypt.module
https://github.com/ArchimboldiMao/SurgeConfig/raw/master/SSEncrypt.module
https://github.com/Unbinilium/Surge/raw/master/SSEncrypt.module

https://github.com/yourtion/SurgeConfigGenerator,Surge配置生成器
https://github.com/ArchimboldiMao/SurgeConfig
https://github.com/lhie1/Rules/blob/master/Surge.conf
https://github.com/galaxysd/GalaxyCodeBases/blob/master/etc/Surge/ss-module.md
https://github.com/Unbinilium/Surge
https://github.com/chuckbadgley/Surge
------------------------
首先你需要一台运行iOS9系统的iOS设备,然后去下载Surge,该软件是付费软件,价格为68。
--------------
Surge这个软件是iPhone/iPad上面一个网络调试工具,不过有一个隐藏功能就是翻墙,之前本站也发表过教程,作者为了自身安全主动下架了商品(12月3日下架),没有购买的就没办法继续购买了,小编当初也是用PP助手装的,现在PP助手也搜不到,留一个备份,有需要的朋友下载。
包括surge.conf和SSEncrypt.module
大概步骤猜测是下载后把ipa文件放到pp助手安装目录下面的apps文件夹,也不知道直接双击会不会安装,反正大家自己测试。
版本是1.0.1,
-----------------------------------------------------

Surge is a web developer tool and proxy utility for iOS 9. This app is designed for developers and may require some level of professional knowledge to use.

Features

  • Capture all HTTP/HTTPS/TCP traffic from any applications on your device, and redirect the traffic to an HTTP/HTTPS/SOCKS5 proxy server following highly configurable rules;
  • Override system DNS settings even on cellular network. And boost performance by sending DNS query to all DNS servers simultaneously.
  • Record and display HTTP request and response header sent from your iOS devices;
  • Configure rules using domain match, domain suffix, domain keyword, CIDR IP range, and/or GeoIP lookup;
  • Measure traffic usage and network speed on WiFi, cellular, and proxy connections.
  • Import rules from URL or iTunes File Sharing;
  • High performance and suitable for intensive use;
  • Block ads by domain rules;
  • Work on cellular network.

Known Issues

  • It is unable to view request and response body. This feature will be added in a future update soon.
  • The HTTP/HTTPS proxy server must support CONNECT method, even when accessing plain HTTP resources.
  • HTTP pipelining is not supported.
  • IPv6 is not supported.
  • SOCKS5 authentication is not supported.
  • There might be a little inaccuracy in traffic usage statistics while using an HTTPS proxy.
  • HTTPS and raw TCP traffic cannot be inspected.
  • Only TCP based protocol is supported.

Architecture

There are two main components in Surge: Surge proxy server and Surge TUN interface.
After started, Surge sets itself as the default HTTP/HTTPS proxy server to handle all HTTP/HTTPS traffic, which allows Surge to boost performance by using HTTP connections' keep-alive mechanism globally. But some apps do not obey system proxy setting (such as Mail.app), because they need to use a raw TCP socket. This kind of traffic is handled by Surge TUN interface.
Currently, Surge TUN interface can only process TCP protocol. Other protocol packet (such as UDP, ICMP) will be dropped. You can use 'bypass-tun' option as a workaround.

Configuration

General Section

[General]
loglevel = verbose
bypass-system = true
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local
bypass-tun = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
dns-server = 8.8.8.8, 8.8.4.4

loglevel (Default: notify)

One of verbose, info, notify or warning. It's not recommended to enable verbose in daily use because this will slow down performance significantly.

bypass-system

This option will add some special rules. First, these rules below are added to allow domains to bypass Surge proxy server and use raw TCP:
api.smoot.apple.com
configuration.apple.com
xp.apple.com
smp-device-content.apple.com
guzzoni.apple.com
captive.apple.com
*.ess.apple.com
*.push.apple.com
*.push-apple.com.akadns.net
Second, this rule is added with the highest priority:
IP-CIDR, 17.0.0.0/8, DIRECT, no-resolve
If you disable this option, it may lead to some system problems, such as delays in push notifications.
Notice: Entire 17.0.0.0/8 address block is assigned to Apple.

skip-proxy

This option forces connections to these domain/IP ranges to be handled by Surge TUN interface, instead of Surge proxy server. This option is used to fix some compatibility problems with some apps.
  • To specify a single domain, enter the domain name - for example, apple.com.
  • To specify all websites on a domain, use an asterisk before the domain name - for example, *apple.com.
  • To specify a specific part of a domain, specify each part - for example, store.apple.com.
  • To specify hosts or networks by IP addresses, enter a specific IP address such as 192.168.2.11 or an address range, such as 192.168.2.* or 192.168.2.0/24.
Notice: If you enter an IP address or address range, you are only able to bypass the proxy when you connect to that host using that address, not when you connect to the host by a domain name that resolves to that address.

bypass-tun

Surge TUN interface can only process TCP protocol. Use this option to bypass specify IP ranges to allow other protocols to pass through.
Notice: This option only works for Surge TUN interface. Request handled by Surge Proxy Server will not be affected. Combine 'skip-proxy' and 'bypass-tun' to make sure that certain HTTP traffic bypasses Surge.

dns-server

You can override the default DNS server with this option. iOS system does not allow you to modify DNS settings on cellular network. With Surge now you can achieve this easily.
To boost performance Surge will send DNS queries to all DNS servers defined in the config simultaneously. The query will be retried every 2 seconds if no response is received, up to 5 times.

Proxy Section

Surge supports HTTP, HTTPS, and SOCKS5 proxy server. Example:
[Proxy]
ProxyA = socks5, example.server.com, 3129
ProxyB = http, example.server.com, 3128
ProxyC = https, example.server.com, 443, username, password
You can create multiple proxies for different rules.
  • Currently only HTTP/HTTPS proxy supports authentication. The username and password are optional.
  • You can force Surge to use a specific HTTPS cipher for HTTPS proxy. Ciphers in GCM mode are recommended to reduce memory usage and improve performance. See config interface for available values.
ProxyC = https, example.server.com, 443, username, password, cipher=TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS session resumption: TLS False Start and Explicit Congestion Notification are enabled by default for HTTPS proxy, to improve performance. There will be options to turn them off in the future.

Rule Section

Rules are matched from the first one to the last one, in the order they appear in the config file. In other words, rules in front have higher priority than rules in the back.
Example:
[Rule]
DOMAIN-SUFFIX,company.com,ProxyA
DOMAIN-KEYWORD,google,DIRECT
GEOIP,US,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT
FINAL ProxyB
Surge supports 6 different types of rule. Each rule consists of 3 parts: rule type, a traffic matcher (except for FINAL rule), and a proxy policy. Rule type is one of DOMAIN, DOMAIN-SUFFIX, DOMAIN-KEYWORD, GEOIP, IP-CIDR, or FINAL. Proxy policy must be one of a proxy name, DIRECT, or REJECT.
  • DOMAIN
DOMAIN,www.apple.com,Proxy
Rule matches if the domain of request matches exactly.
  • DOMAIN-SUFFIX
DOMAIN-SUFFIX,apple.com,Proxy
Rule matches if the domain of the request matches the suffix. For example: 'google.com' matches 'www.google.com', 'mail.google.com' and 'google.com', but does not match 'content-google.com'.
  • DOMAIN-KEYWORD
DOMAIN-KEYWORD,google,Proxy
Rule matches if the domain of the request contains the keyword.
  • IP-CIDR
IP-CIDR,192.168.0.0/16,DIRECT
IP-CIDR,10.0.0.0/8,DIRECT
IP-CIDR,172.16.0.0/12,DIRECT
IP-CIDR,127.0.0.1/8,DIRECT
Rule matches if the IP address of the request matches the specified range.
  • GEOIP
GEOIP,US,DIRECT
Rule matches if the GeoIP test result matches the specified country code.
  • FINAL
FINAL,DIRECT
Rule section must end with a FINAL statement, to specify the default policy.

Option: no-resolve

GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
When a GEOIP or IP-CIDR rule is encountered, Surge will send a DNS query if the hostname of request is a domain. You can specify 'no-resolve' option to skip this rule for a request with domain.

Option: force-remote-dns

DOMAIN,www.apple.com,Proxy,force-remote-dns
DOMAIN-SUFFIX,apple.com,Proxy,force-remote-dns
DOMAIN-KEYWORD,google,Proxy,force-remote-dns
When a raw TCP connection is handled by Surge TUN interface, the application will try to resolve the domain at first, then send packets to the IP address directly. If the domain can not be resolved locally,you can use this option to force the DNS resolution to happen remotely on the proxy.
Technically, when an application tries to resolve a domain which matches a rule with 'force-remote-dns' option. Surge will send a DNS answer with a fake IP address (240.1.x.x). When the application connects to the fake IP, Surge will remap it to a domain and send the request to the remote proxy.
Notice: This option only works for Surge TUN interface. Request handled by Surge Proxy Server will always be resolved in remote if the policy of rule is a proxy.

Protected Configuration

If a configuration file starts with #!REQUIRE-PROTECTED, Surge will mark this configuration file as protected, which prevents users from viewing or editing the configuration file. This is useful when you share your own proxy server with others.

URL Scheme

Surge supports 3 actions and one option.
Action:
  • surge:///start
    Start with selected configuration
  • surge:///stop
    Stop current session
  • surge:///toggle
    Start or stop with selected configuration
Option:
  • autoclose=true
    Auto close Surge after action completed.
    Example: surge:///toggle?autoclose=true
from http://surge.run/manual/
------------------------

iOS9上,Surge搭配Shadowsocks傻白甜教程


原文链接:http://www.jianshu.com/p/de1eb844915d
http://archive.is/QRDRS (文章的备份)

https://g.owind.com/surge-the-missing-tool-for-ios/
-------------------

Surge iOS 授权迁移和 TestFlight 版本申请方法

由于 Surge iOS 在中国区被强制下架,且在已购项目中都不可重新下载与升级,这里给出多种方案保证已购买用户正常使用。
A. 将 App Store 账号永久转换到中国外的区域使用(推荐):
目前网络上已经有很多操作指南,请搜索一下。注意事项有:
- 转换后可以通过在 Apple 官网购买 App Store Gift Card 去购买付费应用。
- 建议转到加拿大,转移美国区需要验证美国 Paypal 或者信用卡。
- 可能有一些副作用,包括:
 * 已经购买的项目不显示在已购项目中,搜索结果里也显示为未购买状态,需要尝试购买一次才能正常(如果记错了其实没买过会导致意外购买,可以通过观察是否可以加入愿望单的方式来确认);
 * 部分应用 iAP 可能异常;
 * 家庭共享可能异常;
 * 恢复 iCloud/ iTunes 备份时,App 下载可能异常。
- 如果账户中有剩余余额,需要联系客服抹除。
- 如果有 Apple Music 订阅,需要联系客服解除订阅。
B. 使用 TestFlight 分发的方式继续使用 Surge:
由于 TestFlight 分发不受强制下架的影响,已购 Surge 用户可以申请 TestFlight 版本以继续使用:
1. 可接受临时转区再转回来:
请临时转到其他区域,更新 Surge iOS 到 2.6.4 以上版本。在 More(更多)标签页中选择 Migrate License(授权转移),填写邮箱(一个可以正常收信的邮箱,不一定是 Apple ID)。
然后转回中国区域,按照邮件中的提示申请 TestFlight 版本。
2. 因为各种原因导致完全无法转区升级到 2.6.4 版本:
a) 如果是在 2.1.0 版本之前购买,已经领取了赠送的 Surge Mac 授权,可通过 http://nssurge.com/account 进行授权迁移并申请 TestFlight 版本;
b) 如果是在 2.1.0 版本之后购买(没有赠送 Surge Mac 授权),请填写该表格 https://goo.gl/forms/fCxZBgm9Kf1cySaK2
会在 3 天左右发送 Surge 授权迁移备份工具的 TestFlight 邀请,使用该工具可以在不升级 2.6.4 版本的情况下进行授权迁移备份。但是该工具需要安装在一个已安装 Surge 的设备上。(如果没有已经安装 Surge 的设备,只能使用转区的方式进行迁移)
FAQ:
Q:授权迁移是什么意思?
A:这个名字起的不太好,准确说应该叫做「授权备份」,因为 Apple 的隐私政策,开发者无法获取到购买用户的任何信息,包括 Apple ID。所以需用用户手动执行该操作,以将自己购买的 Surge iOS 授权和邮箱绑定,方便进行后续操作。迁移后不影响当前 Apple ID 下载和使用 Surge。
Q:怎样进行授权迁移?
A:有 3 种方法:
  1. 升级到 2.6.4 版本自助迁移;
  2. 通过获赠的 Mac 授权迁移;
  3. 通过迁移工具进迁移。
3 种方法效果等价。
Q:授权迁移后可以做什么?
A:迁移后可以申请使用 TestFlgiht 版本,作为中区无法正常下载的一个替代方案。以及用作之后进行大版本升级的验证。
Q:我是在其他区域购买的 Surge(或者已经永久转区),还需要进行授权迁移吗?
A:如果不需要使用 TestFlight 版本,可以不迁移,等到进行大版本升级时再转移。
Q:我现在已经是 TestFlight 版本用户,需要进行什么操作吗?
A:请删除目前的 TestFlight 版本(2.7.0),按照上述方法进行授权迁移并重新申请 TestFlight 版本。
Q:之前 TestFlight 版本必须在安装过 App Store 版本的设备上使用,以后呢?
A:已取消该限制,这也是为什么需要重新登记的原因。
Q:TestFlight 会被兑换到哪个 Apple ID?
A:TestFlight 邀请邮件会被发送到转移授权的那个邮箱上,具体会被兑换到哪个 Apple ID,取决于 TestFlight.app 的登录邮箱,目前看来用于 TestFlight 的 Apple ID 区域依然可以是中国区。
Q:我在多个区域都购买过 Surge,之后进行大版本升级怎么办?
A:升级时会充分考虑这种情况,允许进行授权合并,所以如果急用的话现在直接在其他区域再次购买也是可以的。
Q:怎样知道授权迁移成功了?
A:迁移完毕,会立刻收到邮件确认转移完毕。
Q:转移成功后怎样申请 TestFlight?
A:转移成功的邮件中有登记链接。请在表格中登记用于接收 TestFlight
邀请的邮箱,该邮箱必须和收到转移成功的邮件的邮箱一致。
Q:我不想使用 TestFlight 版本,可以帮我把 Surge 从 Apple ID A 直接迁移到 Apple ID B 吗?
A:开发者无法进行 App Store 的和用户相关的任何操作。
Q:TestFlight 版本会不稳定吗?
A:目前往 TestFlight 分发的版本会优先考虑稳定性。
Q:我用错账号兑换 TestFlight 了,可以修改吗?
A:由于修改起来非常复杂,不支持修改。
如有更多问题请联系 support@nssurge.com

from https://medium.com/@Blankwonder/surge-ios-%E6%8E%88%E6%9D%83%E8%BF%81%E7%A7%BB%E5%92%8C-testflight-%E7%89%88%E6%9C%AC%E7%94%B3%E8%AF%B7%E6%96%B9%E6%B3%95-2d746e35e1dd
---------------------


Surge Guide — 轻松访问家中的网络服务

近期我开始写一些新手向的使用指引,介绍一些不常见的 Surge 使用方式。不定期更新。
相信各位在自己的家中都有一些长期联网的设备,在外出时可能需要访问,比如 NAS 等,通常有两个方式实现:
  1. 直接设置 NAT 端口转发
  2. 架设 VPN 服务器
方法 1 配置简单,但是问题在于直接将相应的服务暴露在公网上,安全性较低,且当增加服务时需要不断去维护转发表。
方法 2 配置起来比较麻烦,但是安全性高,连上之后可以直接访问内网内所有设备。但是 VPN 发动比较麻烦,对所处的网络也有一定要求。
利用 Surge iOS,可以做到无缝的远程安全访问内网设备。
首先我们需要做好以下准备:
  1. 内网中需要一个可以运行代理服务器的设备(如 RaspberryPi、路由器)
  2. DDNS 服务及客户端(DSM 可作为客户端,很多路由器也支持,服务推荐使用花生壳,老牌服务商一直很稳定,且个人使用免费)
  3. 一个可配置的域名
正式开始:
  1. 首先我们需要在内网建立一个代理服务器,由于大家都比较熟悉 ss-server,推荐使用,配置起来非常简单。具体按照配置方法可以参照其他教程。此处假设该设备 IP 为 192.168.1.4,端口号 8388。
2. 配置路由,将 8388 端口的 TCP 访问转发至 192.168.1.4 的 8388。
3. 配置域名指向设备的内网 IP,比如
diskstation.internal.home.yach.me -> 192.168.1.20
gen8.internal.home.yach.me -> 192.168.1.30
假设 DDNS 已经将公网 IP 对应到 home.yach.me
4. 配置 Surge 规则,首先加入相应的 Proxy 设置
[Proxy]
HomeProxy = custom, home.yach.me, 8388,……
然后,为了使的在内网中使用时,不再通过代理进行转发,可以使用 SSID Group。
[Proxy Group]
Home=ssid, default=HomeProxy, HomeSSID=DIRECT, HomeSSID2=DIRECT
最后加入相应的规则
[Rule]
DOMAIN-SUFFIX,internal.home.yach.me,Home,force-remote-dns
(鉴于大部分内网使用的服务使用的都是 raw TCP,请一定加上 force-remote-dns)
5. 搞定,启动 Surge。现在在任何地方访问 *.internal.home.yach.me 都畅通无阻了。
(注 1:不要使用 home.yach.me 这样的容易猜测的域名,有导致自己的公网 IP 暴露的可能性。)
(注 2:新版的 ss-server 使用的是内建的 DNS Client,且没有读取 /etc/hosts,导致无法手动配置域名映射,所以要求准备一个可配置的域名。如果用其他代理服务,那么其实不需要一个真正的域名。)

from https://medium.com/@Blankwonder/surge-guide-%E8%BD%BB%E6%9D%BE%E8%AE%BF%E9%97%AE%E5%AE%B6%E4%B8%AD%E7%9A%84%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1-6188ef189ca8