<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>MAICOO</title>
    <description>真诚且野蛮</description>
    <link>http://blankmagic.github.io/</link>
    <atom:link href="http://blankmagic.github.io/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Tue, 11 May 2021 00:54:24 +0000</pubDate>
    <lastBuildDate>Tue, 11 May 2021 00:54:24 +0000</lastBuildDate>
    <generator>Jekyll v3.9.0</generator>
    
      <item>
        <title>我为什么要建立自己的博客？</title>
        <description>&lt;p&gt;&lt;img src=&quot;https://tva1.sinaimg.cn/large/008i3skNgy1gq9pz6ih89j30m80tm42n.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;提高将事情讲清楚的能力&quot;&gt;提高将事情讲清楚的能力&lt;/h3&gt;

&lt;p&gt;在写博客之前你需要花更多的时间来表达出你的想法，表达你想法之前你得先对你要表达的东西充分理解并理清思路和逻辑。&lt;/p&gt;

&lt;p&gt;很多东西你以为懂了，但当你在写下来的时候，你就觉得无从下手了。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;如果一件事情你不能讲清楚，十有八九你还没有完全理解。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;分享带来的连锁反应&quot;&gt;分享带来的连锁反应&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;“通过分享，你获得了直接而快速的回报，你最终或许会发现你已将版权和“保留所有权利”抛诸脑后。新的经济学准则是：参与你作品的人越多，回报越高。在分享主义里，如果你愿意你可以保留所有权，但是我乐于分享。” by 毛向辉 《分享主义：一场思维革命》&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;记录成长&quot;&gt;记录成长&lt;/h3&gt;

&lt;p&gt;我们每个人都应该有这样的经历:隔了很久我们回头看看以前的自己会发现特别傻x,但正是因为这些傻x的岁月让我们不断成长,你在成长的过程中不断的修正自己的错误。&lt;/p&gt;

&lt;h3 id=&quot;探索未知的世界&quot;&gt;探索未知的世界&lt;/h3&gt;

&lt;p&gt;世界不止是你的家，你的公司，你的朋友圈，你应该去发现一个更大的世界，通过写博客，你会知道世界上还有很多人像你一样在写博客，这些人和知识正在世界的某个角落在等着你。&lt;/p&gt;

&lt;h3 id=&quot;帮助更多想要获取帮助的人&quot;&gt;帮助更多想要获取帮助的人&lt;/h3&gt;

&lt;p&gt;这点我相信大家由为感触,在你探索一个未知的知识领域的时候,往往被撞的一鼻子灰.幸运的人很快就能找到一个“师傅”或一篇很好的文章,但大多数往往在找“教程”的过程中就已经放弃了.因为他们没能够找到刚好理解的文章.&lt;/p&gt;
</description>
        <pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate>
        <link>http://blankmagic.github.io/2021/05/07/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%A0%E8%A6%81%E5%86%99%E5%8D%9A%E5%AE%A2/</link>
        <guid isPermaLink="true">http://blankmagic.github.io/2021/05/07/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%A0%E8%A6%81%E5%86%99%E5%8D%9A%E5%AE%A2/</guid>
        
        <category>博客</category>
        
        
      </item>
    
      <item>
        <title>Surge - 转发，策略和规则</title>
        <description>&lt;p&gt;请求在处理完毕后将被转发。如果 Surge 的出站模式设置为直接连接，那么该请求将被直接发往目标服务器，如果出站模式设置为全局代理，那么将转发给代理服务器。&lt;/p&gt;

&lt;p&gt;当出站模式设置被设置为规则判定时，将根据配置的规则决定转发策略。&lt;/p&gt;

&lt;h2 id=&quot;策略&quot;&gt;策略&lt;/h2&gt;
&lt;blockquote&gt;
  &lt;p&gt;策略：描述了 Surge 进行转发的方式，有三种类别：&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;内置策略：DIRECT、REJECT、REJECT-TINYGIF、REJECT-DROP&lt;/li&gt;
  &lt;li&gt;代理策略：每个策略对应一个代理服务&lt;/li&gt;
  &lt;li&gt;策略组：根据一定的规则从子策略中选择一个最终策略。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;内置策略&quot;&gt;内置策略&lt;/h3&gt;

&lt;p&gt;内置策略由 Surge 提供，不随配置而变化：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;DIRECT&lt;/strong&gt;：将该请求直接发往目标服务器&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;REJECT&lt;/strong&gt;：拒绝该请求，当连接类型为 HTTP 时，会返回一个错误页面。（该行为可被 show-error-page-for-reject 参数控制）&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;REJECT-TINYGIF&lt;/strong&gt;：拒绝该请求，当连接类型为 HTTP 时，返回一个 1px 的 GIF 图片响应。若为其他类型连接则直接断开。该策略主要用于 Web 广告屏蔽。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;REJECT-DROP&lt;/strong&gt;：拒绝该请求，与 REJECT 不同的是，该策略将静默抛弃请求。因为部分程序有着十分暴力的重试逻辑，连接失败后会立刻进行重试，导致请求风暴。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;由于操作系统对用户空间程序（user-space program）的 socket 并没有提供抛弃的操作，Surge 静默抛弃的实现方式是将该 socket 闲置一段时间后再关闭。&lt;/p&gt;

&lt;p&gt;同时，如果发往某主机名的请求短时间内大量触发 REJECT/REJECT-TINYGIF 策略（当前版本的阈值为 30 秒内 10 次），为了避免产生大量资源浪费，Surge 将自动升级策略为 REJECT-DROP 策略。&lt;/p&gt;

&lt;h3 id=&quot;代理策略&quot;&gt;代理策略&lt;/h3&gt;

&lt;p&gt;代理策略由用户自己定义，每个策略描述了一个代理服务，当使用该策略时即为通过该代理服务转发请求。&lt;/p&gt;

&lt;p&gt;一个简单的代理策略定义行如下：&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ProxyA&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;http, 11.22.33.44, 8080, username=user, password=pass&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
  &lt;p&gt;目前大多数用户都是用机场订阅，这里也就放个内置策略自定义别名（栗子如下）或者自建玩家放置服务器节点。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
8
9
10
11
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy]&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 当请求为 HTTP 请求时返回一个极小的 GIF
&lt;/span&gt;&lt;span class=&quot;py&quot;&gt;REJECT-TINYGIF&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;reject-tinygif&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 阻止请求
&lt;/span&gt;&lt;span class=&quot;py&quot;&gt;REJECT&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;reject&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 直接连接
&lt;/span&gt;&lt;span class=&quot;py&quot;&gt;DIRECT&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;direct&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;IP-CIDR,0.0.0.0/32,REJECT,no-resolve&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;OR,((RULE-SET,LAN),&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;(GEOIP,CN)),DIRECT&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;策略组&quot;&gt;策略组&lt;/h2&gt;

&lt;p&gt;Surge 提供多种不同类型的策略组以满足各种场景的不同需求，在具体讲解各种策略组前，需要先了解连通性测试。&lt;/p&gt;

&lt;h3 id=&quot;连通性测试&quot;&gt;连通性测试&lt;/h3&gt;

&lt;p&gt;Surge 的多个功能会用到连通性测试，测试方式有 3 种&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;ICMP Ping 测试：简单的 Ping 测试，用于反映当前物理网络状况。Mac 版本首页卡片和网络诊断中的路由延迟为该测试结果。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;DNS 查询测试：向所有 DNS 服务器并行查询 bing.com 域名的 A 记录，结果为收到响应的最短时间，用于反映当前物理网络状况，同时简单确认具有 Internet 访问。Mac 版本首页卡片和网络诊断中的 DNS 延迟，Mac 版本主菜单和 iOS 版本通知中心插件的连通性测试延迟为该测试结果。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;HTTP 测试：向目标 HTTP 服务器发出 HEAD 请求，计算收到响应头的时间，任意响应数据包均判定为有效。测试地址可自定义，建议选择在全球都有节点的 URL。Mac 版本首页卡片的 Internet 和代理延迟，策略组的判断基准，网络诊断的代理测试为该测试结果。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;策略组使用方法 3 作为判断基准而非方法 1 是因为：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;代理服务器可能有中转，Ping 测试只能表示到达中转服务器的延迟。&lt;/li&gt;
  &lt;li&gt;除了与代理服务器间的连通性，代理服务器的 DNS 和出口网络情况也应该进行考量。&lt;/li&gt;
  &lt;li&gt;某些代理协议因设计欠考虑，会引入额外的延迟开销，如 SOCKS5，也应当被考量。&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;一个策略组可以包括多个子策略&lt;/p&gt;

  &lt;p&gt;子策略可以是一个代理策略，或者另一个策略组，或者是一个内置策略 (DIRECT 或 REJECT)。&lt;/p&gt;

  &lt;p&gt;有 5 种策略组类型: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;select&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;url-test&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fallback&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssid&lt;/code&gt; 和 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;load-balance&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;select-策略组&quot;&gt;select 策略组&lt;/h3&gt;

&lt;p&gt;通过 UI 菜单选择一个策略，举个栗子：&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy Group]&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;Proxy🪁&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;select,&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;🇺🇸&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;America,&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;🇭🇰&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;Load&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;balance&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;🇺🇸&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;America&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;url-test, policy-path=https://sub.store/download/STT, interval=600, tolerance=100, evaluate-before-use=true&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;🇭🇰&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;Load&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;balance&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;load-balance, policy-path=https://sub.store/download/STT, interval=600, tolerance=100, persistent=true&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;FINAL,Proxy🪁&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;如上栗子表示这个配置有两条外部代理服务器链接，策略组 Proxy🪁可以在两者之间通过 UI 手动选择；&lt;/p&gt;

&lt;p&gt;默认规则 FINAL 随策略组 Proxy🪁 的选择而被约束。&lt;/p&gt;

&lt;h3 id=&quot;url-test-策略组&quot;&gt;url-test 策略组&lt;/h3&gt;

&lt;p&gt;并发测试所有子策略，选择延迟最低的策略。有以下几个参数&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;url&lt;/strong&gt;：用于测试的 URL（该参数新版 Surge 已无需在策略组中添加）。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;timeout&lt;/strong&gt;：可选, 秒 (默认值: 5s)，测试的最长等待时间。如果某策略在该时间后依然没有完成，放弃该策略。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;interval&lt;/strong&gt;：可选, 秒 (默认值: 600s) 每次测试的间隔时间。指定在多长时间后，上次的测试结果将被抛弃。所有类 url-test 组的测试时机为：&lt;/li&gt;
  &lt;li&gt;首次使用时进行测试。&lt;/li&gt;
  &lt;li&gt;后续使用该策略组时，如果上次测试的时间间隔已大于 interval 设置时间，则再次触发测试。&lt;/li&gt;
  &lt;li&gt;当目前选中策略产生不可恢复性错误时，直接触发测试。&lt;/li&gt;
  &lt;li&gt;网络切换后，将清理之前的测试结果，当策略组被使用时触发首次测试。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;tolerance&lt;/strong&gt;：可选, 毫秒 (默认值: 100ms) 容忍度，如果某几个策略测试结果相差不大，那么会导致在这几个策略中频繁切换，如果策略的代理服务器的出口 IP 不同，可能会触发目标网站的风险控制。所以加入了容忍度设计，仅当新一次的测试结果中，最佳策略比原选中策略的延迟差大于容忍度时，才会切换至新的策略。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;evaluate-before-use&lt;/strong&gt;：默认情况下，在首次使用策略组时将直接使用子策略中的第一个策略，同时触发延迟测试。如果配置了 evaluate-before-use=true，那么首次使用时将等待测试完毕后选择最佳策略。&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy Group]&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;🇺🇸&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;America&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;url-test, policy-path=https://sub.store/download/STT, interval=600, tolerance=100, evaluate-before-use=true&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Surge 新版本 URL 测试使用全局测试，在设置中添加测试 URL 即可，策略组中无需单独加入。&lt;/p&gt;

&lt;h3 id=&quot;fallback-策略组&quot;&gt;fallback 策略组&lt;/h3&gt;

&lt;p&gt;与 url-test 组基本一致，区别是只关心子策略是否可用而不关心具体延迟，然后从可用策略中选择靠前的策略。可以通过调小 timeout 参数将缓慢线路也标记为不可用。该类型没有 tolerance 参数。&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy Group]&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 调小 timeout 参数
&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;🇨🇳&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;Fallback&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;fallback, policy-path=https://sub.store/download/STT, timeout=3, interval=600, evaluate-before-use=true&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;

&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;load-balance-策略组&quot;&gt;load-balance 策略组&lt;/h3&gt;

&lt;p&gt;负载均衡组，随机从子策略中选取一个策略使用。&lt;/p&gt;

&lt;p&gt;使用 [General] url 参数时，按照 fallback 组的行为进行可用性检查，然后仅从可用的子策略中随机选取。&lt;/p&gt;

&lt;p&gt;除 url、timeout、interval外，还有一个参数：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;persistent&lt;/strong&gt;：当 persistent=true 时，对于同一目标主机名，将尽量使用同一个策略。避免因出口 IP 不同而触发目标网站的风险控制。但当可用性改变时可能导致策略变化。&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy Group]&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 配置 persistent=true 参数，避免 IP 跳动引发风险控制
&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;🇸🇬&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;Singapore&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;load-balance, policy-path=https://sub.store/download/STT, interval=600, tolerance=100, persistent=true&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;ssid-策略组&quot;&gt;ssid 策略组&lt;/h3&gt;

&lt;p&gt;虽然名字依然是 SSID 策略组，但是功能已经扩展，可根据当前网络的 SSID、BSSID、路由 IP 地址等因素选择子策略。iOS 版本还可以为数据网络指定策略。&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy Group]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Adblock&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;ssid, default = REJECT, &quot;SSID Here&quot; = DIRECT&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;RULE-SET,https://www.example.com/reject.list,Adblock&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;FINAL,DIRECT&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如上示例，规则中添加了一条被拒绝规则集，该规则集没有直接指定内置 REJECT 策略，而是添加了一个 Adblock 的 SSID 策略组，表示在默认情况下它是一个 REJECT 策略，但在 SSID 为 “SSID Here” 的网络下使用直连策略。&lt;/p&gt;

&lt;h3 id=&quot;策略组其它参数隐藏禁用通知过滤器&quot;&gt;策略组其它参数（隐藏、禁用通知、过滤器）&lt;/h3&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy Group]&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 参数 hidden=true 隐藏该策略组，在 UI 界面将不被展示
# 参数 no-alert=true 禁用策略组变化通知
# 参数 policy-regex-filter=台湾 节点过滤器，表示这条订阅中筛选出台湾节点
&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;🇨🇳&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;Fallback&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;fallback, policy-path=https://sub.store/download/STT, policy-regex-filter=台湾, timeout=3, interval=600, hidden=true, no-alert=true&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;规则&quot;&gt;规则&lt;/h2&gt;
&lt;p&gt;规则由四个部分组成：类型、条件、策略和参数。当条件满足时，该规则匹配，使用该规则指定的策略。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Surge 使用规则系统来对选择每个连接的出口策略。规则的匹配方式为自上而下，逐一测试。最末尾规则一定是一个 FINAL 规则，当所有规则都不匹配时使用。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;域名规则&quot;&gt;域名规则&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;当连接的目标主机名符合时，匹配该规则。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;DOMAIN&lt;/strong&gt;：严格匹配某域名。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;DOMAIN-SUFFIX&lt;/strong&gt;：匹配某域名及其子域名，如 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DOMAIN-SUFFIX,apple.com&lt;/code&gt; 可以匹配 apple.com 和 www.apple.com，但是不会匹配 anapple.com。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;DOMAIN-KEYWORD&lt;/strong&gt;：简单的字符串搜索，只要域名包含子串就会匹配。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;DOMAIN-SET&lt;/strong&gt;：专为大量域名集列表文件设计，支持上万条记录的快速查询。文件中每行为一个域名，如果某行以 . 开头则表示匹配所有子域名和该域名本身。可用于广告过滤。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ip-地址规则-ip-cidrip-cidr6geoip-三种类型&quot;&gt;IP 地址规则 IP-CIDR，IP-CIDR6，GEOIP 三种类型&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;当连接的目标主机的 IP 地址符合时，匹配该规则。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;当目标主机名是一个域名或主机名时，IP 类型规则会触发本地 DNS 解析。根据解析得到的 IP 地址进行判断。当解析失败时： 如果最终的 FINAL 规则带有 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dns-failed&lt;/code&gt; 标记，那么将直接匹配 FINAL 规则。如果 FINAL 规则不带有 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dns-failed&lt;/code&gt; 标记，该请求将直接失败。&lt;/p&gt;

&lt;p&gt;IP 类型规则有一个专有的参数 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;no-resolve&lt;/code&gt;，如果一个 IP 规则带有该参数，那么 1. 如果目标主机名是一个域名，那么将跳过该规则，不触发 DNS 解析。 2. 如果目标主机名是 IP 地址，按规则进行判断。 3. 如果目标主机名是一个域名，且先前出现的 IP 规则已经触发了 DNS 解析获得了 IP 地址，那么使用该 IP 地址进行判断。&lt;/p&gt;

&lt;p&gt;由于 DNS 查询有时间开销，所以在配置规则时，最优的方式是尽量先不触发 DNS 解析，将所有会触发 DNS 解析的规则放在底部。这样应使用代理策略的请求就完全避免了在本地进行 DNS 解析。&lt;/p&gt;

&lt;p&gt;但是也不用刻意的去完全避免解析，因为一旦决定使用 DIRECT 策略，那么最终还是要进行解析。Surge 有完备的 DNS 缓存系统，不必在意短时间内的重复解析。&lt;/p&gt;

&lt;p&gt;不过需要注意，如果某目标主机在本地 DNS 不可被解析，那么一定需要加入对应的规则，在触发 DNS 前就决定策略终止匹配。或者对 FINAL 规则加上 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dns-failed&lt;/code&gt; 标记并使用代理策略。&lt;/p&gt;

&lt;h3 id=&quot;http-规则-url-regex-和-user-agent&quot;&gt;HTTP 规则 URL-REGEX 和 USER-AGENT&lt;/h3&gt;

&lt;p&gt;比较特殊的是，只有由于只有进行 MITM 解密后才可获取到 URL，所以 URL-REGEX 对未解密的 HTTPS 连接无效。但是 USER-AGENT 规则却对未解密的 HTTPS 也连接有效，因为程序在使用 HTTP 代理时，会在发送 CONNECT 请求时带上自己 User Agent 的明文。&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 微信的 USER-AGENT
&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;USER-AGENT,MicroMessenger&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;Client,DIRECT&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;USER-AGENT,WeChat*,DIRECT&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;其他规则&quot;&gt;其他规则&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;PROCESS-NAME&lt;/strong&gt;：&lt;em&gt;仅对 Mac 版本有效&lt;/em&gt;，可以匹配程序名。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SRC-IP&lt;/strong&gt;：&lt;em&gt;仅对 Mac 版本有效&lt;/em&gt;，可匹配连接来源 IP 地址，接管其他设备连接时可使用。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IN-PORT&lt;/strong&gt;：&lt;em&gt;仅对 Mac 版本有效&lt;/em&gt;，Mac 版本支持多端口监听，可为不同监听端口配置特定的规则。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;DEST-PORT&lt;/strong&gt;：可匹配目标主机的端口号，当目标主机端口号一致时匹配。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;PROTOCOL&lt;/strong&gt;：可根据连接的协议进行匹配，取值范围是 HTTP，HTTPS，TCP，UDP。（虽然逻辑关系上 HTTP 和 HTTPS 都是 TCP 的一种特殊形式，但是该规则将按照前一章的分类区别对待。）&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SCRIPT&lt;/strong&gt;：可以使用 JavaScript 根据各种参数完全自由的选择策略。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SUBNET&lt;/strong&gt;：当 Wi-Fi SSID/BSSID、路由器 IP 地址匹配时匹配。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;蜂窝网络类规则-cellular-carrier-和-cellular-radio&quot;&gt;蜂窝网络类规则 CELLULAR-CARRIER 和 CELLULAR-RADIO&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CELLULAR-CARRIER&lt;/strong&gt;：当数据网络的 MCC-MNC 编码一致时匹配，编码必须以 xxx-xx 的格式输入，当使用 Wi-Fi 网络时该规则无效。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CELLULAR-RADIO&lt;/strong&gt;：当数据网络的无线电接入符合时匹配，可选参数 GPRS, Edge, WCDMA, HSUPA, CDMA1x, CDMAEVDORev0, CDMAEVDORevA, CDMAEVDORevB, eHRPD, HRPD, LTE, NRNSA, NR, 当使用 Wi-Fi 网络时该规则无效。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Surge 查看当前蜂窝网络 CELLULAR-CARRIER 和 CELLULAR-RADIO 方法：在脚本编辑器输入如下字符，然后点击执行，即可看到日志记录。&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nx&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;$network&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;$done&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;规则集&quot;&gt;规则集&lt;/h3&gt;

&lt;p&gt;RULE-SET 规则集可以将多个子规则放在一个单独的文件中，便于分享和复用。但是规则集中的规则不可以指定策略，整个规则集指向一个同一个策略。&lt;/p&gt;

&lt;p&gt;另外 Surge 自带了 SYSTEM 和 LAN 两个规则集，规则集包含的具体子规则会随 Surge 更新而有所调整。注意 LAN 规则集会触发 DNS 解析。&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;RULE-SET,SYSTEM,DIRECT&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;RULE-SET,LAN,DIRECT&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;rule-set-和-domain-set-的不同&quot;&gt;RULE-SET 和 DOMAIN-SET 的不同&lt;/h3&gt;

&lt;p&gt;RULE-SET 可包含所有类型的子规则，执行效率和在主配置中的规则没有区别，而 DOMAIN-SET 仅可使用 DOMAIN 和 DOMAIN-SUFFIX 两种形式的内容，使用了特别的逻辑进行优化，在内容非常多时性能有极大的提升。（千条以上，否则两者没有太大的区别）&lt;/p&gt;

&lt;h3 id=&quot;逻辑规则&quot;&gt;逻辑规则&lt;/h3&gt;

&lt;p&gt;可通过 AND，OR，NOT 运算对所有规则类型进行组合使用。如&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 可以拦截 Chrome 发出的 UDP 数据包
&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;AND,((PROCESS-NAME,Google&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;Chrome),(PROTOCOL,UDP)),REJECT&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://blankmagic.github.io/2021/05/06/Surge-logical-rules/&quot;&gt;详见&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate>
        <link>http://blankmagic.github.io/2021/05/07/Surge-%E8%BD%AC%E5%8F%91-%E7%AD%96%E7%95%A5%E5%92%8C%E8%A7%84%E5%88%99/</link>
        <guid isPermaLink="true">http://blankmagic.github.io/2021/05/07/Surge-%E8%BD%AC%E5%8F%91-%E7%AD%96%E7%95%A5%E5%92%8C%E8%A7%84%E5%88%99/</guid>
        
        <category>iOS</category>
        
        <category>Mac</category>
        
        <category>Surge</category>
        
        <category>规则</category>
        
        <category>策略组</category>
        
        
      </item>
    
      <item>
        <title>Surge - 轻松访问家中的网络设备</title>
        <description>&lt;p&gt;&lt;strong&gt;相信各位在自己的家中都有一些长期联网的设备，在外出时可能需要访问，比如 NAS 等，通常有两个方式实现：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;直接设置 NAT 端口转发：配置简单，但是问题在于直接将相应的服务暴露在公网上，安全性很低，且当增加服务时需要不断去维护端口转发表。&lt;/li&gt;
  &lt;li&gt;架设 VPN 服务器：配置起来比较麻烦，但是安全性高，连上之后可以直接访问内网内所有设备。但是 VPN 发动慢，容易失败，性能较差。
利用 Surge iOS，可以做到无缝的远程安全访问内网设备。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;首先我们需要做好以下准备：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;内网中需要一个可以运行代理服务器的设备（如 RaspberryPi、路由器、iMac Mini）&lt;/li&gt;
  &lt;li&gt;DDNS 服务及客户端（DSM 可作为客户端，很多路由器也支持，服务推荐使用花生壳或 no-ip.com）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;正式开始：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;请将内网的网段修改为一个不常见的网段，以避免与在外使用的 WiFi 网络的内网 IP 冲突导致问题，如 192.168.0.1/24 和 192.168.1.1/24 就是两个极为常见的网段，而 192.168.150.0/24 则很罕见，修改方式请参照路由器的配置说明。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;我们需要在内网建立一个代理服务器，如果在家中有一个长期开启的 macOS 设备，推荐直接使用 Surge Mac 运行 Snell 代理服务，配置方式参见手册，&lt;a href=&quot;https://manual.nssurge.com/others/snell-server.html&quot;&gt;https://manual.nssurge.com/others/snell-server.html&lt;/a&gt;。
如果没有，则可以选择任意设备，配置运行 snell-server 或者 ss-server，具体配置方式请参见程序的帮助。此处假设该设备 IP 为 192.168.150.4，代理服务端口号 6160。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;配置路由器，将 6160 端口的 TCP 访问转发至 192.168.150.4 的 6160。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;配置一个 DDNS，获得指向家中 IP 的域名，如：home.yach.me&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;配置 Surge 规则，首先加入相应的 Proxy 设置&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;HomeProxy&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;snell, home.yach.me, 6160, psk=password&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;为了在内网中使用时，不再通过代理进行转发，可以使用 SSID Group。&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy Group]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Home&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;ssid, default=HomeProxy, HomeSSID=DIRECT, HomeSSID2=DIRECT&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;最后加入相应的规则&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Rule]&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;IP-CIDR,192.168.150.0/24,Home,no-resolve&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;搞定，启动 Surge。现在在任何地方访问家中的设备都畅通无阻了。&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;注 1：不要使用 home.yach.me 这样的容易猜测的域名，有导致自己的公网 IP 暴露的可能性。&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        <pubDate>Thu, 06 May 2021 17:00:00 +0000</pubDate>
        <link>http://blankmagic.github.io/2021/05/06/Surge-%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%E8%AE%BE%E5%A4%87/</link>
        <guid isPermaLink="true">http://blankmagic.github.io/2021/05/06/Surge-%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%E8%AE%BE%E5%A4%87/</guid>
        
        <category>Surge</category>
        
        <category>Snell</category>
        
        
      </item>
    
      <item>
        <title>记录几个博客常用 App</title>
        <description>&lt;h3 id=&quot;macdown&quot;&gt;&lt;a href=&quot;https://macdown.uranusjr.com&quot;&gt;MacDown&lt;/a&gt;&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;可能是 Mac 上最简单的 markdown 编辑器&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;什么是-macdown&quot;&gt;什么是 MacDown？&lt;/h2&gt;
&lt;p&gt;MacDown 是 macOS 的开源 Markdown 编辑器，根据MIT许可证发布。UI 如下图：&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/blankmagic/blankmagic.github.io/main/img/in-post/app-macdown.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;ipic&quot;&gt;&lt;a href=&quot;https://toolinbox.net/iPic/&quot;&gt;iPic&lt;/a&gt;&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Markdown 图床、文件上传工具&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;有了图床神器 iPic，不论屏幕截图、还是复制图片，都可以自动上传、保存 Markdown 格式的链接，直接粘贴插入，够懒人吧？&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;使用 Hexo&lt;/td&gt;
      &lt;td&gt;Heroku 或 WordPress 写博客、在公众号发文章、在知乎讨论、在豆瓣灌水、在论坛发帖、跨境做外贸电商 …&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;iPic 带给你从未有过的插图体验。&lt;/p&gt;

&lt;p&gt;当然，除了图片，你可以 上传普通文件，上传方式与图片完全相同。&lt;/p&gt;

&lt;p&gt;&lt;img align=&quot;center&quot; src=&quot;https://ps-hz.toolinbox.net/006tKfTcgy1fewqw208xmg30j60aske8.gif&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;imageoptim&quot;&gt;&lt;a href=&quot;https://imageoptim.com/mac&quot;&gt;ImageOptim&lt;/a&gt;&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;图片压缩工具&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;对于我们的博客来说，图片越大，加载速度越慢。&lt;/p&gt;

&lt;p&gt;不信你用手机打开你的博客试试~&lt;/p&gt;

&lt;p&gt;所以有必要对我们上传到博客网站中的图片：指的是你的头像，首页背景图片，文章背景图片等。对于博客文章中插入的图片，其实也可以压缩了再上传。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/blankmagic/blankmagic.github.io/main/img/in-post/app-imageoptim.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;暂时这几个，此文保持更新！&lt;/em&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 06 May 2021 14:00:00 +0000</pubDate>
        <link>http://blankmagic.github.io/2021/05/06/%E8%AE%B0%E5%BD%95%E5%87%A0%E4%B8%AA%E5%8D%9A%E5%AE%A2%E5%B8%B8%E7%94%A8-App/</link>
        <guid isPermaLink="true">http://blankmagic.github.io/2021/05/06/%E8%AE%B0%E5%BD%95%E5%87%A0%E4%B8%AA%E5%8D%9A%E5%AE%A2%E5%B8%B8%E7%94%A8-App/</guid>
        
        <category>App</category>
        
        <category>Mac</category>
        
        
      </item>
    
      <item>
        <title>Surge - 配置文件指引</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;Surge 核心的功能由配置文件（Profile）所控制，当遇到一些特殊需求时，需要通过手动编辑配置文件方可实现，本文总结了 Surge 配置文件系统的一些梳理。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;配置文件的内容&quot;&gt;配置文件的内容&lt;/h2&gt;

&lt;p&gt;配置文件的格式部分沿用了 INI 文件的格式，以 [Section] 进行分段，用于划分不同的段落，对设置内容进行区隔。&lt;/p&gt;

&lt;p&gt;每个段落的配置行分别有其特定的语法，如 [General]、[Replica]、[MITM] 段是简单的 key = value 的形式&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[General]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;key&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;value&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在这几个段里，配置行的先后顺序并无影响。但是在如 [Rule] 等段中，配置行的上下顺序非常重要。&lt;/p&gt;

&lt;h2 id=&quot;配置文件的分类&quot;&gt;配置文件的分类&lt;/h2&gt;

&lt;p&gt;配置文件分为三类：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;普通配置：即手动创建或默认使用的一般配置文件（详见 &lt;a href=&quot;https://github.com/blankmagic/surge&quot;&gt;GitHub&lt;/a&gt; 仓库）。&lt;/li&gt;
  &lt;li&gt;托管配置：通常由企业管理员或服务商提供。托管配置由于可以被远程更新，所以不可以在本地进行修改。如需要进行修改应先创建副本变为普通配置。&lt;/li&gt;
  &lt;li&gt;企业配置：仅限企业版本，不可修改和查看，也不可建立副本。
    &lt;h2 id=&quot;配置段分离&quot;&gt;配置段分离&lt;/h2&gt;
    &lt;p&gt;为了满足各种使用场景的复杂性，Surge Mac 4.1.0 Beta / Surge iOS Beta 1903 开始支持将配置的一个段分离至另一个文件中。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;如：&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy]&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;#!include Proxy.dconf
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其中所引用的另一个文件，必须包含对应段的 [] 声明。因此，该文件既可以是一个只包含部分段的文件（一个或多个），也可以是一个完整的配置。&lt;/p&gt;

&lt;p&gt;Proxy.dconf&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nn&quot;&gt;[Proxy]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ProxyA&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;http, 1.2.3.4, 80&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;使用该功能，你可以：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;引用托管配置的 [Proxy]、[Proxy Group]、[Rule] 段，自行编写其他段。这样既可以享受托管配置的代理相关的内容更新，也不影响通过 UI 调整其他的功能。&lt;/li&gt;
  &lt;li&gt;在多个配置间共享某几个段的内容。比如同时在 iOS 和 macOS 上使用 Surge 时，[Proxy]、[Proxy Group]、[Rule] 等段的内容往往是一样的，但是 [General] 的内容却可能大不相同。可建立 iOS.conf 和 macOS.conf 两个配置，将重复的部分放置于另一个文件中。&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
8
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;[Proxy]
#!include Proxy.dconf

[Proxy Group]
#!include Policy.dconf

[Rule]
#!include Rule.dconf
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这样，当调整 iOS 上 [General] 段相关内容时，并不会影响 macOS 端，也避免了维护两套代理配置的麻烦。同时完全不妨碍使用 UI 进行配置。&lt;/p&gt;

&lt;p&gt;一些补充说明：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;在通过 UI 修改配置后，会按照 include 的声明将配置写入对应的分离配置段文件。如果该文件包含其他未用到的段落，写入时只会修改涉及的段落。&lt;/li&gt;
  &lt;li&gt;如果引用的是一个托管配置，则和该段相关的配置不可被编辑，但是不影响其他段的调整。&lt;/li&gt;
  &lt;li&gt;为了配合该功能的使用，Surge Mac 新版中将对所有已安装的托管配置定期检查更新，旧版本中仅对当前使用中的配置检查更新。&lt;/li&gt;
  &lt;li&gt;文件名的后缀并没有要求，如果是一个完整配置可继续使用 conf 后缀，如果并非一个完整配置建议使用其他后缀，以避免被显示在配置列表中。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;模块&quot;&gt;模块&lt;/h2&gt;
&lt;p&gt;配置段分离功能用于将单个配置文件拆分为多个文件，而模块则是对配置文件的补丁，每个模块文件用于对配置文件的各个部分进行微调，以实现某个特定的任务。&lt;/p&gt;

&lt;p&gt;模块可以：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;灵活的开启与关闭。&lt;/li&gt;
  &lt;li&gt;在同一个文件内对多个段进行调整。&lt;/li&gt;
  &lt;li&gt;可通过 URL 进行安装并保持更新。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;但是&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;模块不可以调整 [Proxy]、[Proxy Group]、[Rule] 段内容。&lt;/li&gt;
  &lt;li&gt;模块不可以调整 MITM 的 CA 证书。&lt;/li&gt;
  &lt;li&gt;模块的设置覆盖于主配置之上，因此不可以通过 UI 进行调整。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;模块基本概念&quot;&gt;模块基本概念&lt;/h3&gt;

&lt;p&gt;模块相当于给当前配置进行 Patch，其优先级高于配置本身的设置。有三种模块：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;内置模块：Surge 会预置一些模块，随着 Surge 自身更新。&lt;/li&gt;
  &lt;li&gt;本地模块：放置在配置文件目录的 .sgmodule 文件&lt;/li&gt;
  &lt;li&gt;安装的模块：从某个 URL 安装的模块
    &lt;ul&gt;
      &lt;li&gt;点击「&lt;strong&gt;模块卡片&lt;/strong&gt;」下方的「&lt;strong&gt;&lt;em&gt;模块&lt;/em&gt;&lt;/strong&gt;」按钮，点击「&lt;strong&gt;&lt;em&gt;安装新模块…&lt;/em&gt;&lt;/strong&gt;」按钮，粘贴以你需要的模块「&lt;em&gt;&lt;a href=&quot;https://github.com/blankmagic/surge/tree/main/module&quot;&gt;sgmodule&lt;/a&gt; 文件的 GitHub raw 链接&lt;/em&gt;」，确认安装后确保刚刚安装的模块左侧有对勾代表模块已经启用，点击右上角「&lt;strong&gt;&lt;em&gt;完成&lt;/em&gt;&lt;/strong&gt;」确认即可。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;你可以同时开启多个模块，模块的开启状态保存于当前设备，不会进行同步。切换配置也不影响模块的开启状态。&lt;/p&gt;

&lt;h3 id=&quot;模块编写&quot;&gt;模块编写&lt;/h3&gt;

&lt;p&gt;模块的内容和标准配置基本一致，目前支持调整以下段：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;General，Replica有三种写法
    &lt;ul&gt;
      &lt;li&gt;key = value：直接覆盖原始值&lt;/li&gt;
      &lt;li&gt;key = &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPEND%&lt;/code&gt; value：在原始值的末尾进行追加（仅适用于适用逗号分隔的字段）&lt;/li&gt;
      &lt;li&gt;key = &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%INSERT%&lt;/code&gt; value：在原始值的开始进行插入（仅适用于适用逗号分隔的字段）&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;MITM仅支持操作 hostname 字段，同样支持上述三种写法。&lt;/li&gt;
  &lt;li&gt;Script，URL Rewrite，Header Rewrite，Host新加入的定义将会追加在原始内容的顶部。&lt;/li&gt;
  &lt;li&gt;Rule
    &lt;ul&gt;
      &lt;li&gt;新配置的规则将被插入在最顶部&lt;/li&gt;
      &lt;li&gt;规则只可以使用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DIRECT&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;REJECT&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;REJECT-TINYGIF&lt;/code&gt; 三个策略&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;同时，模块支持配置 name，desc 和 system 描述，请参照最后的样例。(system 描述的可取值为 ios 和 mac，用于限制模块的使用范围)&lt;/p&gt;

&lt;h3 id=&quot;模块样例&quot;&gt;模块样例&lt;/h3&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;c&quot;&gt;#!name=MitM All Hostnames
#!desc=Perform MitM on all hostnames with port 443, except those to Apple and other common sites which can't be inspected. You still need configure CA certificate and enable the main switch of MitM.
&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;[MITM]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;hostname&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;-*.apple.com, -*.icloud.com, -*.mzstatic.com, -*.crashlytics.com, -*.facebook.com, -*.instagram.com, *&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;c&quot;&gt;#!name=Game Console SNAT
#!desc=Let Surge handle SNAT conversation properly for PlayStation, Xbox, and Nintendo Switch. Only useful if Surge Mac acts the router for these devices.
#!system=mac
&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;[General]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;always-real-ip&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;%APPEND% *.srv.nintendo.net, *.stun.playstation.net, xbox.*.microsoft.com, *.xboxlive.com&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate>
        <link>http://blankmagic.github.io/2021/05/06/Surge-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%8C%87%E5%BC%95/</link>
        <guid isPermaLink="true">http://blankmagic.github.io/2021/05/06/Surge-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%8C%87%E5%BC%95/</guid>
        
        <category>Surge</category>
        
        <category>配置</category>
        
        
      </item>
    
      <item>
        <title>Surge - 规则：逻辑规则</title>
        <description>&lt;h3 id=&quot;and&quot;&gt;AND&lt;/h3&gt;
&lt;blockquote&gt;
  &lt;p&gt;与规则 - 当所有子规则都满足时，则执行该规则：&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;AND,((#Rule1), (#Rule2), (#Rule3)...),Proxy
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;示例&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;AND,((PROCESS-NAME,Google Chrome),(PROTOCOL,UDP)),REJECT
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;拦截 Chrome 发出的 UDP 数据包。&lt;/p&gt;

&lt;h3 id=&quot;or&quot;&gt;OR&lt;/h3&gt;
&lt;blockquote&gt;
  &lt;p&gt;或规则 - 当任意子规则满足时，则执行该规则：&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;OR,((#Rule1), (#Rule2), (#Rule3)...),Proxy
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;示例&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;OR,((RULE-SET,SYSTEM), (RULE-SET,LAN), (GEOIP,CN)),DIRECT
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Surge 系统内置规则可以用 OR 规则写到一条内，表示系统内置规则 SYSTEM、本地局域网、GeoIP 中国走直连。&lt;/p&gt;

&lt;h3 id=&quot;not&quot;&gt;NOT&lt;/h3&gt;
&lt;blockquote&gt;
  &lt;p&gt;非规则 - 当任意子规则满足时，则执行该规则：&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;NOT,((#Rule1)),Proxy
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;示例&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;AND,((NOT,((SRC-IP,192.168.1.110))),(DOMAIN, example.com)),DIRECT
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这条规则稍微有点复杂，它将 AND 和 NOT 相结合，它表示网关模式下除了设备 192.168.1.110 以外的其他设备在请求域名 example.com 时做直连处理。&lt;/p&gt;
</description>
        <pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate>
        <link>http://blankmagic.github.io/2021/05/06/Surge-logical-rules/</link>
        <guid isPermaLink="true">http://blankmagic.github.io/2021/05/06/Surge-logical-rules/</guid>
        
        <category>Surge</category>
        
        <category>规则</category>
        
        <category>逻辑规则</category>
        
        
      </item>
    
  </channel>
</rss>
