-
-
Save nonusx/c148fa0625e1c6964ea8e921d6436268 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
tag:blogger.com,1999:blog-55002971261857367762023-03-24T23:49:21.057+08:00GFW BLOG(功夫网与翻墙)翻越防火长城,你可以到达世界上的每一个角落。<br> Across the Great Firewall, you can reach every corner in the world.GFW BLOG 功夫网与翻墙http://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-10137548438576568452023-03-23T11:36:00.003+08:002023-03-23T13:03:22.111+08:00编程随想被判刑?<br /><br />2023年3月22日,网络开始流传著名匿名博客”网络随想“被中国上海判刑7年并遭遇不公正法律过程对待。随后引起网络上广泛的讨论和辩论,究竟被判刑的阮晓寰先生是否是真正“编程随想”,目前仍然没有结论,而官方的<a href="https://zh.wikipedia.org/wiki/%E7%BC%96%E7%A8%8B%E9%9A%8F%E6%83%B3%E7%9A%84%E5%8D%9A%E5%AE%A2#/media/File:%E4%B8%8A%E6%B5%B7%E5%B8%82%E7%AC%AC%E4%BA%8C%E4%B8%AD%E7%BA%A7%E4%BA%BA%E6%B0%91%E6%B3%95%E9%99%A2%E5%88%91%E4%BA%8B%E5%88%A4%E5%86%B3%E4%B9%A6_%E9%98%AE%E6%99%93%E5%AF%B0_1.jpg">判决书</a>也没有任何清晰的表述,让本案更加扑朔迷离。<br /><br /><a href="https://t.me/iyouport/12606"> iYouPort 认为:</a><br /><blockquote>- 判决书中是否指认了被告的身份为 “博主编程随想”?是如何指认的? 尤其是:此案的刑侦过程,将对未来的前线工作者数字安全防御部署策略的更新,具有重要的指导作用。 目前为止,我看到的相关信息很可能并不比您多。是的,这里有很多信息空白,以至于难以形成逻辑链。<br /><br />- 网络上流传的追踪/去匿名化过程和细节 - 对于“编程随想”在数字安全方面的专业性水平来说 - 居然如此简陋,是令人震惊的和不可思议的。</blockquote><br /><br />所指的“简陋”是指“编程随想”曾经非常自信的隐匿经验:“<a href="https://program-think.blogspot.com/2019/01/Security-Guide-for-Political-Activists.html">为啥朝廷总抓不到俺——十年反党活动的安全经验汇总</a> ”,与判决书中大致形容的他完全不符合。如果被判刑的阮晓寰先生是真正的“编程随想”,那么他自己根本就没有实践自己的经验,完全是纸上谈兵。例如,如果他在本地使用Linux,而且做了硬盘加密,就不可能被官方轻易取证,<a href="https://twitter.com/TimNew/status/1638665640985919488">在他的本地硬盘发现博客的所谓.XML备份文件</a>。而是否他的博客是编程随想的博客地址:<a href="https://program-think.blogspot.com/">https://program-think.blogspot.com </a>更是语焉不详。<br /><br />另外的问题是为何官方不能胁迫或者控制其博客,然后关闭或删除其内容?有人认为阮晓寰在紧急情况下已经销毁了两步认证的Key-file(例如authenticator),既然销毁,<a href="https://program-think.blogspot.com/2019/02/Use-Disk-Encryption-Anti-Computer-Forensics.html?m=1">就可以销毁任何其他数字证据</a>,这种不完整的做法显然不是一个安全专家的作为。而且,如果当局无法直接获得控制,其他手段还是可以行使的,或者在判决书中提及此问题,增加对其处罚的力度。<br /><br />总之,诸多疑点,靠简单的推理无法得到答案。如果中本聪在世,恐怕也不会有比特币了,这正是他更加聪明之处。<br /><br /><br />至于阮晓寰先生所遭遇的不公正对待,当然值得公众关注,任何类似的指控和判决都是违反中国宪法的。希望律师和民间的努力让阮先生能够有机会健康走出监狱,告知大众真相。<br /><br />最后,提醒各位,注意上网安全,尤其不要在微信讨论此事件,记住你的周围就是渔网。 <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-76933927910841227662023-03-06T23:56:00.005+08:002023-03-23T10:58:19.999+08:00ChatGPT 快捷指令<p dir="auto">from: <a href="https://github.com/rockbenben/ChatGPT-Shortcut">https://github.com/rockbenben/ChatGPT-Shortcut</a> <br /></p><p dir="auto"><a href="https://newzone.top/chatgpt/" rel="nofollow">ChatGPT Shortcut</a> 是根据领域和功能划分的 ChatGPT 快捷指令表,可通过标签筛选、关键词搜索和一键复制来使用提示词,旨在简化你的工作流程并提高生产力。即使是初学者,你<strong>只需复制提示词,稍加修改后发送给 ChatGPT,就能获得指定输出</strong>,让你的生产力加倍!</p><p dir="auto">提示词(即 Prompt)通常是用户提供的问题或文本,以激活模型生成回复。简单来说,prompt 就是用户想要询问的内容,作为输入送到 ChatGPT 中,ChatGPT 会尝试理解这个输入,然后输出合适的回答或响应。通过优化提示词,可以使 ChatGPT 生成更加准确、有用的回复。ChatGPT Shortcut 页面上的提示词来自网络精选、投稿和 <a href="https://github.com/f/awesome-chatgpt-prompts">Awesome ChatGPT Prompts</a>,定期更新。如需自定义提示词,可以参考 ChatGPT Shortcut 和 <a href="https://platform.openai.com/examples" rel="nofollow">ChatGPT Prompt Examples</a> 进行调整,同时也欢迎<a data-hovercard-type="discussion" data-hovercard-url="/rockbenben/ChatGPT-Shortcut/discussions/11/hovercard" href="https://github.com/rockbenben/ChatGPT-Shortcut/discussions/11">投稿</a>。</p><p dir="auto">开箱即用:<a href="https://newzone.top/chatgpt/" rel="nofollow">https://newzone.top/chatgpt/</a></p><h2 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#使用说明" id="user-content-使用说明"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto" tabindex="-1">使用说明</h2><p dir="auto">ChatGPT Shortcut 页面默认显示全部的提示词,页面分为标签区、搜索区和提示词展示区。</p><p dir="auto"><a href="https://user-images.githubusercontent.com/28252913/222007639-20148284-8366-427f-9ee7-ad1be0edbd2e.png" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/28252913/222007639-20148284-8366-427f-9ee7-ad1be0edbd2e.png" style="max-width: 100%;" /></a></p><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#︎-标签筛选" id="user-content-︎-标签筛选"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1">🏷︎ 标签筛选</h3><p dir="auto">标签区按提示词的领域和功能进行划分,可根据不同场景和需求进行选择。与标签区右上方的「标签筛选规则切换」按钮配合使用,可进行多标签筛选。默认状态为 OR,即选中标签下的所有提示词。切换到 AND 后,将筛选出具备已选中的多个标签的提示词。</p><p dir="auto"><a href="https://user-images.githubusercontent.com/28252913/222007524-c83bcbe9-302e-4c39-be87-0f7ff0bdb2e0.png" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/28252913/222007524-c83bcbe9-302e-4c39-be87-0f7ff0bdb2e0.png" style="max-width: 100%;" /></a></p><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#-关键词搜索" id="user-content--关键词搜索"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1"><img alt="mag" class="emoji" height="20" src="https://github.githubassets.com/images/icons/emoji/unicode/1f50d.png" width="20" /> 关键词搜索</h3><p dir="auto">关键词搜索范围包括提示词的标题、简介、内容和中文翻译。输入关键词后,提示词展示区将立即展示筛选出的内容。如果已选中标签,则关键词搜索仅限于标签筛选范围内。</p><p dir="auto"><a href="https://user-images.githubusercontent.com/28252913/222007492-e4e5428b-3988-4b10-bb48-cdb0b4de882d.png" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/28252913/222007492-e4e5428b-3988-4b10-bb48-cdb0b4de882d.png" style="max-width: 100%;" /></a></p><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#-展示区复制" id="user-content--展示区复制"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1"><img alt="microscope" class="emoji" height="20" src="https://github.githubassets.com/images/icons/emoji/unicode/1f52c.png" width="20" /> 展示区复制</h3><p dir="auto">通过标签筛选和关键词搜索,点击卡片右上方的「复制」按钮即可获取提示词,将其粘贴到 ChatGPT 中,参考中文提示调整需求文本,即可得到指定领域的回复。如果提示词中的中文备注没有解释清楚,可以点击提示词的绿色标题查看来源网页。</p><p dir="auto"><a href="https://user-images.githubusercontent.com/28252913/222007471-e7bec93d-164a-42d2-a019-1b5655bf29fb.png" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/28252913/222007471-e7bec93d-164a-42d2-a019-1b5655bf29fb.png" style="max-width: 100%;" /></a></p><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#-语言切换" id="user-content--语言切换"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1"><img alt="speech_balloon" class="emoji" height="20" src="https://github.githubassets.com/images/icons/emoji/unicode/1f4ac.png" width="20" /> 语言切换</h3><p dir="auto">默认情况下,提示词内容会显示为英文。如果你想查看中文释义,可以点击提示词内容将其切换到中文,再次点击即可切回英文。请注意,语言切换只在文字上点击有效,点击空白区域无效。</p><p dir="auto"><a data-target="animated-image.originalLink" href="https://camo.githubusercontent.com/e7f3d52027254beb3237f7ffbb8e278c1f26bb5799edd6205dacdfc2592204e3/687474703a2f2f74632e73656f69706f2e636f6d2f6368617467707473686f72746375745f656e636e2e676966" rel="noopener noreferrer nofollow" target="_blank"><img alt="中英文切换" data-canonical-src="http://tc.seoipo.com/chatgptshortcut_encn.gif" data-target="animated-image.originalImage" src="https://camo.githubusercontent.com/e7f3d52027254beb3237f7ffbb8e278c1f26bb5799edd6205dacdfc2592204e3/687474703a2f2f74632e73656f69706f2e636f6d2f6368617467707473686f72746375745f656e636e2e676966" style="display: inline-block; max-width: 100%;" /></a> </p><p dir="auto">如果想让提示词默认显示为中文,你可以点击导航栏右侧的 <code>CN</code> 按钮。需要注意的是,即使切换到中文翻译,复制按钮也仅针对英文提示词复制。下方会有解释原因。</p><h2 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#-常见问题" id="user-content--常见问题"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto" tabindex="-1"><img alt="thinking" class="emoji" height="20" src="https://github.githubassets.com/images/icons/emoji/unicode/1f914.png" width="20" /> 常见问题</h2><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#为什么提示词用英文" id="user-content-为什么提示词用英文"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1">为什么提示词用英文?</h3><p dir="auto">ChatGPT Shortcut 是为方便中文母语人士使用 ChatGPT 而创建的,但是提示词却全部是英文。这是因为相较于中文,ChatGPT 对英文的理解更为出色。即使是国内第一个对话式大型语言模型 MOSS,也承认 MOSS 的英文回答水平比中文高,建议使用英文。(MOSS 已不对外开放)</p><p dir="auto">使用中文提示词可能会得到不错的结果,但是当你再次输入相同的中文提示时,结果可能与之前大相径庭。因为 ChatGPT 对中文的理解每次都不同,所以建议大家在生产力型提示词的输入中使用英文提示词,以保证输出效果。此外,英文提示词带来的回复也很可能是英文的,你可以在提示词结尾添加 <code>respond in Chinese</code>,将回复指定为中文。</p><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#搜索无法输入中文" id="user-content-搜索无法输入中文"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1">搜索无法输入中文</h3><p dir="auto">搜索功能基于 Docusaurus 的 showcase,因此存在与其相同的 bug。移动端支持中文输入,而 PC 端使用中文输入法会丢失焦点,需通过复制中文关键词来解决,或者使用浏览器自带的全文搜索功能。一般情况下,建议使用英文搜索。已将该问题提交给 Docusaurus,正在等待修复。目前对方的回复是尝试修复 <code>FWIW, you should not be using Chinese anyway, since the showcase is not localized</code>。</p><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#输出虚假信息" id="user-content-输出虚假信息"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1">输出虚假信息</h3><p dir="auto">ChatGPT 虽然非常强大,但并不是万能的。有时它会输出虚假信息。例如,当我需要将上百条信息录入到 ChatGPT Shortcut 中时,我让 ChatGPT 按指定格式转换数据。但是在转换过程中,我发现其中一些信息被 ChatGPT 误写。例如,在文本中一条标签是 <code>movie critic</code>,而 ChatGPT 将其更改为 <code>film critic</code>。尽管这在文本中不会造成什么影响,但放在代码中会报错。因此,在使用 ChatGPT 时,务必检查其输出内容。</p><h3 dir="auto" tabindex="-1"><a aria-hidden="true" class="anchor" href="https://github.com/rockbenben/ChatGPT-Shortcut#提示词不好用" id="user-content-提示词不好用"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto" tabindex="-1">提示词不好用</h3><p dir="auto">所有提示词均来自互联网,会定期进行更新。虽然我测试过每一条提示词,但实际效果可能因需求而有所偏差。如果你发现任何错误、有创意的想法或有好的提示词,欢迎<a data-hovercard-type="discussion" data-hovercard-url="/rockbenben/ChatGPT-Shortcut/discussions/11/hovercard" href="https://github.com/rockbenben/ChatGPT-Shortcut/discussions/11">反馈和投稿</a>。</p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-36852853960874334922023-03-05T23:52:00.000+08:002023-03-15T23:55:55.042+08:00利用 GitHubPoster 和 GitHub Actions 备份任意用户推特<p dir="auto">来自: <a href="https://github.com/yihong0618/gitblog/issues/252">https://github.com/yihong0618/gitblog/issues/252</a> <br /></p><p dir="auto">完全不用登陆,不用申请开发者,备份任意非锁推推特用户的所有推特</p><h2 dir="auto">为什么用 Github Actions</h2><ol dir="auto"><li>不用全局梯子</li><li>不需要考虑翻墙软件的 ssl 问题</li><li>方便且不用考虑本地环境配置问题</li></ol><h2 dir="auto">注意</h2><ul dir="auto"><li>GitHub_TOKEN 目前是 read-only 大家需要先设置权限<br /><a href="https://user-images.githubusercontent.com/15976103/216485565-17f47919-1854-4b6e-8e74-2fddcc4f6cfd.png" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/15976103/216485565-17f47919-1854-4b6e-8e74-2fddcc4f6cfd.png" style="max-width: 100%;" /></a></li><li>参考官方文章 <a href="https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-default-github_token-permissions">https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-default-github_token-permissions</a></li></ul><h2 dir="auto">How to? 只需要几个步骤,具体可以参考图片</h2><ol dir="auto"><li>fork or clone <a href="https://github.com/yihong0618/GitHubPoster">GitHubPoster</a></li><li>enable GitHub Actions</li><li>找到如下图的的 <code class="notranslate">Twitter Back Up</code></li><li>点击 Run workflow</li><li>输入推友的 twitter name 点击绿色的 Run workflow</li><li>等待 Actions 跑完</li><li>所有推特备份记录在 OUT_FOLDER/${twitter_user_name}.txt 中,大家可以自己备份分享,还有个展示的 svg</li><li>如果遇到 permission deny 情况可以参考这个 issue <span class="reference"><svg aria-hidden="true" class="octicon octicon-issue-opened open mr-1" height="16" title="Open" viewbox="0 0 16 16" width="16"></svg></span></li></ol><ol dir="auto"><li value="8"><span class="reference"><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-hovercard-type="issue" data-hovercard-url="/ad-m/github-push-action/issues/96/hovercard" data-id="956099627" data-permission-text="Title is private" data-url="https://github.com/ad-m/github-push-action/issues/96" href="https://github.com/ad-m/github-push-action/issues/96">remote: Permission to git denied to github-actions[bot].<span class="issue-shorthand"> ad-m/github-push-action#96</span></a></span> 打开写的权限</li></ol><p dir="auto"><a href="https://user-images.githubusercontent.com/15976103/202878694-d9f74861-f06b-45a3-8976-2a3235702595.jpeg" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/15976103/202878694-d9f74861-f06b-45a3-8976-2a3235702595.jpeg" style="max-width: 100%;" /></a></p><p dir="auto"><strong>例 Action workflow</strong></p><p dir="auto"><a href="https://github.com/yihong0618/GitHubPoster/actions/runs/3503844462/jobs/5869157102">https://github.com/yihong0618/GitHubPoster/actions/runs/3503844462/jobs/5869157102</a></p><h2 dir="auto">注意</h2><ol dir="auto"><li>鉴于推特这些天的情况,这个可能随时不好用,我不会持续更新</li><li>锁推用户无法备份,如果你锁推并且想备份自己的可以先开锁,等备份完成后再锁</li><li>如果你想备份自己的又不想给别人看,可以把项目设成私有的,一样可以跑 Actions</li><li>不会回答太多问题</li></ol><h2 dir="auto">下图为 <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frostming/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frostming">@frostming</a> 的推特演示</h2><p dir="auto"><a href="https://user-images.githubusercontent.com/15976103/202855616-3e8991e1-9bed-4754-afad-53964c30f5aa.png" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/15976103/202855616-3e8991e1-9bed-4754-afad-53964c30f5aa.png" style="max-width: 100%;" /></a></p><p dir="auto"><a href="https://user-images.githubusercontent.com/15976103/202855635-dbf03409-da9a-4894-9c66-d9e94d9ebda6.png" rel="noopener noreferrer nofollow" target="_blank"><img alt="image" src="https://user-images.githubusercontent.com/15976103/202855635-dbf03409-da9a-4894-9c66-d9e94d9ebda6.png" style="max-width: 100%;" /></a></p><h2 dir="auto">Enjoy it</h2> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-82627037599010471352023-03-05T23:12:00.003+08:002023-03-09T00:05:59.496+08:00解决 OpenAI 和 ChatGPT 的 API 无法访问的问题<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; font-size: 16px; line-height: 24px;"> </span><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">来自: <a href="https://github.com/noobnooc/noobnooc/discussions/9">https://github.com/noobnooc/noobnooc/discussions/9</a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">事实证明 ChatGPT 是足够火爆的,火爆到什么程度呢,其 API 一经推出便获得了 GFW 的认证。在 Twitter 上看到很多人都在为解决无法正常访问 OpenAI 的 API 而苦恼,最常见解决方案是使用一台服务器来进行反向代理,但这样又徒增了一些成本。因为之前在公司的业务上遇到过类似问题,当时老板找到了一个还不错的几乎零成本解决方案,试了一下现在仍然可以用来解决 OpenAI 的 API 无法访问的问题,所以在这里推荐给大家。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">该方案的主要思路是使用 Cloudflare 的 Workers 来代理 OpenAI 的 API 地址,配合自己的域名即可在境内实现访问。因为 Cloudflare Workers 有每天免费 10 万次的请求额度,也有可以免费注册的域名,所以几乎可以说是零成本。而且该方法理论上支持所有被认证的网站,而不只是 OpenAI。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">使用这个方案需要你有以下东西:</p><ul style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><li>一个没有被 GFW 认证的域名(<del>没有的话也可以到<span> </span><a href="https://www.freenom.com/" rel="noreferrer noopener" style="cursor: auto; pointer-events: none; text-decoration: none;" target="_blank">https://www.freenom.com</a><span> </span>免费注册一个,</del><img alt="26a0.png" src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png" style="display: block; max-width: 100%;" /><br />据推友提醒,freenom 已暂停新用户注册,但相信对于大家来说注册域名不是啥大问题)</li><li>一个 Cloudflare 账号(当然也可以现注册)</li></ul><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><img alt="26a0.png" src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png" style="display: block; max-width: 100%;" /><br />请不要直接使用本教程示例中的地址,因为随时会被关闭。也不要使用任何其他人搭建的不受信任的地址,因为有 api key 被盗取的可能。</p><h2 style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; letter-spacing: normal; margin-top: 10px !important; padding-top: 10px !important; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">太长不看</h2><ol style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><li>新建一个 Cloudflare Worker</li><li>将<span> </span><a href="https://gist.github.com/noobnooc/d0407b5fb81cff9d36f981170b99d4e6" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank">https://gist.github.com/noobnooc/d0407b5fb81cff9d36f981170b99d4e6</a><span> </span>里的代码粘贴到 Worker 中并部署</li><li>给 Worker 绑定一个没有被 GFW 认证的域名</li><li>使用自己的域名代替<span> </span><code>api.openai.com</code></li></ol><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">如果具体步骤有问题,可以参考下面的详细版教程。</p><h2 style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; letter-spacing: normal; margin-top: 10px !important; padding-top: 10px !important; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><img alt="1f195.png" src="https://github.githubassets.com/images/icons/emoji/unicode/1f195.png" style="display: block; max-width: 100%;" /><br />将域名 NS 转到 Cloudflare</h2><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">如果域名已经托管在 Cloudflare 的忽略这一步即可。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><img alt="26a0.png" src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png" style="display: block; max-width: 100%;" /><br />经评论区指出,Cloudflare Workers 的域名绑定仅支持托管在 Cloudflare 上的域名。由于本人常年是把域名托管在 Cloudflare 的没有注意到这一点,所以得先将域名的 NS 转到 Cloudflare,如果介意将域名转到 Cloudflare 的话,可以考虑使用 nginx 反代、Docker 容器等其他方法<img alt="1f972.png" src="https://github.githubassets.com/images/icons/emoji/unicode/1f972.png" style="display: block; max-width: 100%;" /><br />。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">没有 Cloudflare 账号的话可以注册一个,具体注册细节就不多说了。注册或登录到 Cloudflare 的管理界面后,点击侧边栏的 “Websites” ,然后点击 “Add a Site” 按钮准备将域名转到 Cloudflare:</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222916699-9f076d54-4f5b-4420-9d28-c3575d83c6a0.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222916699-9f076d54-4f5b-4420-9d28-c3575d83c6a0.png" src="https://user-images.githubusercontent.com/38027416/222916699-9f076d54-4f5b-4420-9d28-c3575d83c6a0.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">在 “Enter your site (example.com)” 处输入要转入的域名后,点击 “Add Site”:</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222916797-637a6fff-8331-423a-bbff-13183dcd041a.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222916797-637a6fff-8331-423a-bbff-13183dcd041a.png" src="https://user-images.githubusercontent.com/38027416/222916797-637a6fff-8331-423a-bbff-13183dcd041a.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">根据 Cloudflare 的提示,在域名注册商处将 NS 修改到 Cloudflare 指定的地址,等待域名解析成功后,即可进行后续操作。</p><h2 style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; letter-spacing: normal; margin-top: 10px !important; padding-top: 10px !important; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">创建一个 Cloudflare Worker</h2><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">登录到 Cloudflare 的管理界面后,点击侧边栏的 “Workers” 选项,然后点击 “Create a Service” 创建一个 Worker。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222871270-d973e2bd-74f9-4efa-b080-e665903a7bac.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222871270-d973e2bd-74f9-4efa-b080-e665903a7bac.png" src="https://user-images.githubusercontent.com/38027416/222871270-d973e2bd-74f9-4efa-b080-e665903a7bac.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">然后在创建界面中输入 “Service name” 后点击 “Create Service” 按钮新建 Worker。“Select a starter” 项先不用管。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222871439-4ac253c6-d87f-434e-a8e8-3d05c652217d.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222871439-4ac253c6-d87f-434e-a8e8-3d05c652217d.png" src="https://user-images.githubusercontent.com/38027416/222871439-4ac253c6-d87f-434e-a8e8-3d05c652217d.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">至此 Cloudflare 的 Worker 便创建好了,下面开始修改 Worker 的代码,使其能代理 OpenAI 的 API。</p><h2 style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; letter-spacing: normal; margin-top: 10px !important; padding-top: 10px !important; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">修改 Cloudflare Worker 的代码</h2><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">在 Worker 的管理界面,点击右上角的 “Quick Edit” 按钮编辑代码 Worker 的代码。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222871710-c1d4834e-3bb4-49cf-a9dd-b7dcee258112.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222871710-c1d4834e-3bb4-49cf-a9dd-b7dcee258112.png" src="https://user-images.githubusercontent.com/38027416/222871710-c1d4834e-3bb4-49cf-a9dd-b7dcee258112.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">在左侧的代码编辑器中,删除现有的所有代码,然后复制粘贴以下内容到代码编辑器:</p><pre style="-webkit-text-stroke-width: 0px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: pre-wrap; word-spacing: 0px;">// Website you intended to retrieve for users.<br />const upstream = 'api.openai.com'<br /><br />// Custom pathname for the upstream website.<br />const upstream_path = '/'<br /><br />// Website you intended to retrieve for users using mobile devices.<br />const upstream_mobile = upstream<br /><br />// Countries and regions where you wish to suspend your service.<br />const blocked_region = []<br /><br />// IP addresses which you wish to block from using your service.<br />const blocked_ip_address = ['0.0.0.0', '127.0.0.1']<br /><br />// Whether to use HTTPS protocol for upstream address.<br />const https = true<br /><br />// Whether to disable cache.<br />const disable_cache = false<br /><br />// Replace texts.<br />const replace_dict = {<br /> '$upstream': '$custom_domain',<br />}<br /><br />addEventListener('fetch', event => {<br /> event.respondWith(fetchAndApply(event.request));<br />})<br /><br />async function fetchAndApply(request) {<br /> const region = request.headers.get('cf-ipcountry').toUpperCase();<br /> const ip_address = request.headers.get('cf-connecting-ip');<br /> const user_agent = request.headers.get('user-agent');<br /><br /> let response = null;<br /> let url = new URL(request.url);<br /> let url_hostname = url.hostname;<br /><br /> if (https == true) {<br /> url.protocol = 'https:';<br /> } else {<br /> url.protocol = 'http:';<br /> }<br /><br /> if (await device_status(user_agent)) {<br /> var upstream_domain = upstream;<br /> } else {<br /> var upstream_domain = upstream_mobile;<br /> }<br /><br /> url.host = upstream_domain;<br /> if (url.pathname == '/') {<br /> url.pathname = upstream_path;<br /> } else {<br /> url.pathname = upstream_path + url.pathname;<br /> }<br /><br /> if (blocked_region.includes(region)) {<br /> response = new Response('Access denied: WorkersProxy is not available in your region yet.', {<br /> status: 403<br /> });<br /> } else if (blocked_ip_address.includes(ip_address)) {<br /> response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', {<br /> status: 403<br /> });<br /> } else {<br /> let method = request.method;<br /> let request_headers = request.headers;<br /> let new_request_headers = new Headers(request_headers);<br /><br /> new_request_headers.set('Host', upstream_domain);<br /> new_request_headers.set('Referer', url.protocol + '//' + url_hostname);<br /><br /> let original_response = await fetch(url.href, {<br /> method: method,<br /> headers: new_request_headers,<br /> body: request.body<br /> })<br /><br /> connection_upgrade = new_request_headers.get("Upgrade");<br /> if (connection_upgrade && connection_upgrade.toLowerCase() == "websocket") {<br /> return original_response;<br /> }<br /><br /> let original_response_clone = original_response.clone();<br /> let original_text = null;<br /> let response_headers = original_response.headers;<br /> let new_response_headers = new Headers(response_headers);<br /> let status = original_response.status;<br /> <br /> if (disable_cache) {<br /> new_response_headers.set('Cache-Control', 'no-store');<br /> }<br /><br /> new_response_headers.set('access-control-allow-origin', '*');<br /> new_response_headers.set('access-control-allow-credentials', true);<br /> new_response_headers.delete('content-security-policy');<br /> new_response_headers.delete('content-security-policy-report-only');<br /> new_response_headers.delete('clear-site-data');<br /> <br /> if (new_response_headers.get("x-pjax-url")) {<br /> new_response_headers.set("x-pjax-url", response_headers.get("x-pjax-url").replace("//" + upstream_domain, "//" + url_hostname));<br /> }<br /> <br /> const content_type = new_response_headers.get('content-type');<br /> if (content_type != null && content_type.includes('text/html') && content_type.includes('UTF-8')) {<br /> original_text = await replace_response_text(original_response_clone, upstream_domain, url_hostname);<br /> } else {<br /> original_text = original_response_clone.body<br /> }<br /> <br /> response = new Response(original_text, {<br /> status,<br /> headers: new_response_headers<br /> })<br /> }<br /> return response;<br />}<br /><br />async function replace_response_text(response, upstream_domain, host_name) {<br /> let text = await response.text()<br /><br /> var i, j;<br /> for (i in replace_dict) {<br /> j = replace_dict[i]<br /> if (i == '$upstream') {<br /> i = upstream_domain<br /> } else if (i == '$custom_domain') {<br /> i = host_name<br /> }<br /><br /> if (j == '$upstream') {<br /> j = upstream_domain<br /> } else if (j == '$custom_domain') {<br /> j = host_name<br /> }<br /><br /> let re = new RegExp(i, 'g')<br /> text = text.replace(re, j);<br /> }<br /> return text;<br />}<br /><br /><br />async function device_status(user_agent_info) {<br /> var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];<br /> var flag = true;<br /> for (var v = 0; v < agents.length; v++) {<br /> if (user_agent_info.indexOf(agents[v]) > 0) {<br /> flag = false;<br /> break;<br /> }<br /> }<br /> return flag;<br />}</pre><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">最后点击编辑器右下角的 “Save and deploy” 按钮部署该代码,在弹出的对话框中继续选择 “Save and deploy” 确认部署。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222872146-bf4c8f30-307a-4511-9be6-8c19db5cab43.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222872146-bf4c8f30-307a-4511-9be6-8c19db5cab43.png" src="https://user-images.githubusercontent.com/38027416/222872146-bf4c8f30-307a-4511-9be6-8c19db5cab43.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">至此,便可以使用该 worker 的地址来代替 OpenAI 的 API 地址了。比如想要请求 ChatGPT 的 API 时,把官方文档中的<span> </span><code>https://api.openai.com/v1/chat/completions</code><span> </span>替换成<span> </span><code>https://openai.workers.dev</code><span> </span>即可(注意这个地址并不存在,是需要换成自己刚刚创建的 Worker 的地址)。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">但是你可能会发现,这样做了依然还是没有解决问题,因为 Cloudflare Workers 的<span> </span><code>workers.dev</code><span> </span>域名也是被 GFW 认证过的<img alt="1f972.png" src="https://github.githubassets.com/images/icons/emoji/unicode/1f972.png" style="display: block; max-width: 100%;" /><br />。但是好在只是认证了<span> </span><code>workers.dev</code><span> </span>域名,而 ip 还是幸存的状态,所以我们可以给 Worker 绑定一个自己的域名。</p><h2 style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; letter-spacing: normal; margin-top: 10px !important; padding-top: 10px !important; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">绑定域名</h2><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">在 Cloudflare Workers 的管理界面中,点击 “Triggers” 选项卡,然后点击 “Custom Domians” 中的 “Add Custom Domain” 按钮以绑定域名。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222872491-026600f5-c04c-49c5-9fdf-4d4abb0b66f7.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222872491-026600f5-c04c-49c5-9fdf-4d4abb0b66f7.png" src="https://user-images.githubusercontent.com/38027416/222872491-026600f5-c04c-49c5-9fdf-4d4abb0b66f7.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">输入域名后点击 “Add Custom Domain”,<del>根据提示修改域名的 DNS 记录。因为我的域名是托管在 Cloudflare 上的,所以无需手动更改 DNS 记录,如果域名没有托管在 Cloudfalre 上,可以根据相关提示自行配置。</del><img alt="26a0.png" src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png" style="display: block; max-width: 100%;" /><br />据评论区提示,目前只支持 NS 托管在 Cloudflare 上的域名,如果不介意,可以点击 Cloudflare 侧边栏的 “Websites”,然后点击 “Add a Site” 按钮,根据提示将域名的 NS 记录指定到 Cloudflare。</p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222872581-b99c8870-bcc7-4b8d-ba1e-1ad7830ce776.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222872581-b99c8870-bcc7-4b8d-ba1e-1ad7830ce776.png" src="https://user-images.githubusercontent.com/38027416/222872581-b99c8870-bcc7-4b8d-ba1e-1ad7830ce776.png" style="display: block; max-width: 100%;" /><br /></a></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">至此便大功告成。等待片刻,应该就可以通过你自己的域名来代替 OpenAI 的 API 地址了,比如在本文的例子中,想要请求 ChatGPT 的 API ,即是把官方 API 地址<span> </span><code>https://api.openai.com/v1/chat/completions</code><span> </span>换为我自己的域名<span> </span><code>https://openai.nooc.ink/v1/chat/completions</code><span> </span>,其他参数均参照官方示例即可。由于 Cloudflare 有每天免费 10 万次的请求额度,所以轻度使用基本是零成本的。<img alt="26a0.png" src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png" style="display: block; max-width: 100%;" /><br />注意请不要使用我这里的<span> </span><code>openai.nooc.ink</code>,因为随时可能会被我关闭<img alt="1f92a.png" src="https://github.githubassets.com/images/icons/emoji/unicode/1f92a.png" style="display: block; max-width: 100%;" /></p><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://user-images.githubusercontent.com/38027416/222873100-8979dd0e-9572-4d6b-92d6-86d012bdd188.png" rel="noreferrer noopener" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank"><img alt="222873100-8979dd0e-9572-4d6b-92d6-86d012bdd188.png" src="https://user-images.githubusercontent.com/38027416/222873100-8979dd0e-9572-4d6b-92d6-86d012bdd188.png" style="display: block; max-width: 100%;" /><br /></a></p><hr style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" /><p style="-webkit-text-stroke-width: 0px; font-family: sans-serif; font-size: 12.8px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; overflow-wrap: break-word; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><a href="https://github.com/noobnooc/noobnooc/discussions/9" style="color: black; cursor: auto; pointer-events: none; text-decoration: none;" target="_blank">https://github.com/noobnooc/noobnooc/discussions/9</a></p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-75897392323364963232023-02-20T20:33:00.007+08:002023-03-05T23:11:08.980+08:00去中心化点对点网络简史 | 现代去中心化网络 #Nostr 和 #RingsNetwork<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><div class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="3f22" style="text-align: left;">来自:<a href="#">https://medium.com/@croath/%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96%E7%82%B9%E5%AF%B9%E7%82%B9%E7%BD%91%E7%BB%9C%E7%AE%80%E5%8F%B2-%E7%8E%B0%E4%BB%A3%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96%E7%BD%91%E7%BB%9C-nostr-%E5%92%8C-ringsnetwork-8283bb60923b</a> <br /></div><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="3f22">什么是点对点网络?</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="3bb3">点对点网络(peer-to-peer 或 P2P)又称对等网络,是去中心化、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="103f">与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="f216">点对点网络的分类</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="cd18">根据中心化程度,点对点网络可以分为三大类:</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="2b01">一般型 P2P</h1><ul class=""><li class="nv nw gw jj b jk jl jo jp js zo jw zp ka zq ke zr ob oc od bi" data-selectable-paragraph="" id="e20a">节点同时作为客户端和服务器端。</li><li class="nv nw gw jj b jk oe jo of js og jw oh ka oi ke zr ob oc od bi" data-selectable-paragraph="" id="4326">没有中心服务器。</li><li class="nv nw gw jj b jk oe jo of js og jw oh ka oi ke zr ob oc od bi" data-selectable-paragraph="" id="f5a9">没有中心路由器。</li></ul><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="a0d9">比特币(Bitcoin)网络、BitTorrent 网络、eDonkey 网络(电驴,电骡,ed2k)均属于一般型 P2P,每一个节点均可以作为客户端和服务端,它没有一个中心,没有任何一个节点能够控制整个网络,每一个节点的功能和权限都是对等存在的。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="f49c">特殊型 P2P</h1><ul class=""><li class="nv nw gw jj b jk jl jo jp js zo jw zp ka zq ke zr ob oc od bi" data-selectable-paragraph="" id="f839">有一个中心服务器保存节点的信息并对请求这些信息的要求做出响应。</li><li class="nv nw gw jj b jk oe jo of js og jw oh ka oi ke zr ob oc od bi" data-selectable-paragraph="" id="5e9a">节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。</li><li class="nv nw gw jj b jk oe jo of js og jw oh ka oi ke zr ob oc od bi" data-selectable-paragraph="" id="4bfd">路由终端使用地址,通过被一组索引引用来获取绝对地址</li></ul><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="c6dd">早期的 Napster 网络属于特殊型 P2P 网络,一群高性能的中央服务器保存着网络中所有活动对等计算机共享资源的目录信息。当需要查询某个文件时,对等机会向一台中央服务器发出文件查询请求。中央服务器进行相应的检索和查询后,会返回符合查询要求的对等机地址信息列表。查询发起对等机接收到应答后,会根据网络流量和延迟等信息进行选择,和合适的对等机建立连接,并开始文件传输。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="7fe8">混合型 P2P</h1><ul class=""><li class="nv nw gw jj b jk jl jo jp js zo jw zp ka zq ke zr ob oc od bi" data-selectable-paragraph="" id="5b1a">同时含有一般型 P2P 和特殊型 P2P 的特点。</li></ul><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="b311">Skype 属于混合型 P2P 网络,用户信息和聊天信息存储在中心化服务器中,当用户直接进行文件传输时,Skype 客户端之间又可以发起直连,不通过服务器,允许客户端之间直接传递文件。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="fa1b">点对点网络发展史</h1><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="7204">1969 年 — ARPANET</h1><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="hy hz di ia bf ib" role="button" tabindex="0"><div class="dy dz zs"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="502" role="presentation" src="https://miro.medium.com/max/700/0*00jxvqchdCqWGDBx" width="700" /></picture></div></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">ARPANET 技术架构图</figcaption></figure><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="dy dz zt"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="396" role="presentation" src="https://miro.medium.com/max/490/0*B7dtjFMNSE1QqF1S" width="490" /></picture></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">APRANET 访问界面</figcaption></figure><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="fa69">ARPANET(Advanced Research Projects Agency Network,阿帕网),是美国国防高级研究计划局开发的世界上第一个运营的数据包交换网络,是全球互联网的鼻祖。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="dd70">阿帕网的主机之间视彼此为对等的计算机节点,而非 C/S(Cilent-Server) 结构。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="a514">1979 年 — Usenet</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="b954">1979年杜克大学的研究生汤姆·特拉斯科特与吉姆·埃利斯设计出来 Usenet,并于1980年发布。Usenet 包含众多新闻组,它是新闻组(异于传统,新闻指交流、信息)及其消息的网络集合,他就像早期的 reddit,是用户聚集的论坛。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="8a71">Usenet 比万维网的诞生早了十年,被称为“穷人的阿帕网”。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="6193">当用户发布文章时,根据所分 Usenet 层级(新闻组)存储在服务器,它一开始仅在该用户使用的新闻服务器上可以浏览。 每个新闻服务器与其他服务器(“新闻源”)交换文章。这种方式就是 P2P 信息传输,文章从一个服务器复制到另一个服务器 ,最终可以传达到网络中的每个服务器,新闻组消息得以被分布式存储于全球大量的计算机中。每一台服务器都包涵所有的文章内容,服务器之间独立运行,同步文章。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="5f7d">从 90 年代开始,用户便不断上传体积庞大的非文本类内容(色情图片、软件等),自此开始 Usenet 的服务器在流量和存储空间上开始呈现爆炸趋势。AOL 于 2005 年停止使用 Usenet。2010年5月,早在30多年前就开始使用 Usenet 的杜克大学关闭了它的 Usenet 服务器,其理由是使用率低且成本不断上升。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="ffa9">1999 年 — Napster</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="44e2">Napster 是一种提供线上音乐服务的软体,最初由约翰·范宁、肖恩·范宁和西恩·帕克共同创立的档案共享服务。</p><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="hy hz di ia bf ib" role="button" tabindex="0"><div class="dy dz zu"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="293" role="presentation" src="https://miro.medium.com/max/700/0*CfOICggKGMhUoQyl" width="700" /></picture></div></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">电影《社交网络》中 Mark 的投资人 Sean Parker</figcaption></figure><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="ad7d">用户可以免费下载Napster客户端,然后从别人那里下载MP3文件,同时自己也作为一台服务器,供别人下载。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="29e7">Napster有一台中心服务器,向所有用户提供文件目录服务,客户想下载音乐时,需要先到这台中心服务器上查询哪些客户端拥有这首音乐,然后直连到那台机器下载。(上文所述特殊型 P2P 网络)</p><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="dy dz zv"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="541" role="presentation" src="https://miro.medium.com/max/667/0*X_FFyxAI4RKByCYk" width="667" /></picture></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">Napster 操作界面</figcaption></figure><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="6851">Napster 是第一个被广泛应用的点对点音乐共享服务,它极大幅度地影响了人们,特别是对于大学生使用互联网的方式。而它的出现,也使得音乐爱好者间共享MP3歌曲变得容易,却也因此招致了影音界对其大规模侵权行为的指责。尽管在法庭的责令下该服务已经终止,但它却为其他点对点文件共享程序 — — 如 Kazaa,Limewire 和 BearShare — — 的拓展铺好了路,且对这种方式的文件共享的控制,亦变得愈加困难。如今 Napster 以经营付费服务为主,而免费的 Napster 的流行和回响使其在电脑界和娱乐业里成为一个传奇的象征。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="0d98">2000 年 — Gnutella</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="2e1e">与半中心化网络的 Napster 不同,Gnutella 网络是完全分布式的。其最初的流行是源于 2001 年早期 Napster 由于法律纠纷而被关闭的威胁。不断增长的用户也使得该协议的最初版本暴露了不少缺陷。2001年早期,各种不同版本的协议(最初以专有闭源客户软件形式实现)使得 Gnutella 的扩展性得到了增强。与先前的协议将每一个用户节点都当作用户以及服务器不同,改进过的协议将某些用户当作”超节点”(ultrapeer),其为与之连接的所有用户路由搜索请求及回应。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="456a">2000 年 — Freenet</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="e2a4">Freenet 是一个内容发布和沟通平台,专为抵御内容审查而设计。海盗湾、维基解密、丝绸之路等著名平台都是基于 Freenet 的。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="8338">P2P 本身的特性使其具有天然的抗审查特性,其平台的内容得以在节点中永久保存且不容易一次性删除或屏蔽所有节点,可以说 Freenet 的发布正式开启了暗网时代。</p><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="hy hz di ia bf ib" role="button" tabindex="0"><div class="dy dz zw"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="394" role="presentation" src="https://miro.medium.com/max/700/0*h9mYaUE87iNzjH7w" width="700" /></picture></div></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">毒品、致幻剂、管制药品等在丝绸之路上以比特币明码标价</figcaption></figure><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="0065">2001年 — Bittorrent</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="f156">BitTorrent 协议(简称 BT,俗称比特洪流、BT 下载)是用在对等网络中文件分享的网络协议程序。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="7892">BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。同时,拥有完整文件的用户也会越来越多,文件的“寿命”也就越长。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="5eff">种子文件本质上是文本文件,包含 Tracker 信息和文件信息两部分。Tracker 信息主要是BT下载中需要用到的 Tracker 服务器的地址和针对 Tracker 服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据 BitTorrent 协议内的 Bencode 规则进行编码。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="bd8b">后来 BitTorrent 引入了分布式哈希技术( DHT ),相比泛洪查询技术,DHT效率显著提升。DHT 全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个 DHT 网络的寻址和存储。使用支持该技术的 BT 下载软件,用户无需连上 Tracker 就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。这种技术好处十分明显,就是大大减轻了 Tracker 的负担(甚至不需要)。用户之间可以更快速创建通讯(特别是与 Tracker 连接不上的时候)。</p><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="hy hz di ia bf ib" role="button" tabindex="0"><div class="dy dz zx"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="455" role="presentation" src="https://miro.medium.com/max/700/0*4zR8-b2ePdAYoN_I" width="700" /></picture></div></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">BitTorrent 的客户端之一</figcaption></figure><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="8e99">2009 年 — Bitcoin</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="f1ef">比特币(英语:Bitcoin,缩写:BTC)是一种基于去中心化,采用点对点网络与共识主动性,开放源代码,以区块链作为底层技术的加密货币,比特币由中本聪(网名,Satoshi Nakamoto)于 2008 年10月31日发表论文,2009 年 1 月 3 日,创世区块诞生。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="44e4">比特币结合 P2P 对等网络技术和密码学原理,来维持发行系统的安全可靠性。与有中心服务器的中央网络系统不同,在 P2P 网络中无中心服务器,每个用户端既是一个节点,也有服务器的功能,任何一个节点都无法直接找到其他节点,必须依靠其户群进行信息交流。比特币使用以下 3 种机制,来解决初次运行时,查找其他节点的问题。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="553f">在默认情况下,运行比特币的用户端加入一个IRC聊天通道,并可以获知加入该通道的其他用户端的IP地址和端口。该通道的名称和IRC聊天服务器的名称被写在了比特币软件中。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="4870">一些“知名的”比特币节点也被编写在软件中,以防IRC聊天服务功能因故无法访问。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="b5dc">可以手动添加运行比特币的其他用户端的 IP 地址。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="2e6f">现在不需要运行上述 3 个机制,一旦连接到比特币的某个节点,在发送的信息中,就会包含对等网络 P2P 其他节点的地址,直接通过其匿名用户群来找到其他节点。节点遍布整个互联网的 P2P 技术和密码学原理相结合,确保了比特币发行系统无法被政府、组织、或黑客监控、隔离、或破坏,从而保障了系统的可靠性和匿名性。拒绝服务式(DDoS)以及其他攻击,其目标都是针对比特币交易中心,这和攻击或关闭传统货币交易所的网络,理论上不影响其货币发行和使用一样。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="d620">2012 年 — Diaspora</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="59e6">Diaspora 将自己定位为开源的个人 Web 服务器和去中心化的社交网络。2010 年在 Kickstarter 上筹资 $200,000 后,项目正式成立,并迅速发布了一个测试版本,到了2012年,稳定的社区版才算正式发布。Diaspora 的目标之一就是替代 Facebook。Facebook 是一个集中式的平台,用户使用它时,只需要一台 Web 浏览器即可,而Diaspora 是需要专门下载自己的程序客户端的,这也使得推广起来比较难。另外,有的人其实根本不关心集中式平台带来的隐私问题。</p><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="hy hz di ia bf ib" role="button" tabindex="0"><div class="dy dz zy"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="371" role="presentation" src="https://miro.medium.com/max/700/0*pZptJqxN7wKmB2Ij" width="700" /></picture></div></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">Diaspora</figcaption></figure><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="7751">总结</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="c994">自 1969 年以来的 50 多年时间里,P2P 网络由从昂贵走向廉价,由专用(音乐)逐渐走向通用(文件、网站),多元化程度也得以发展,虚拟货币、隐私网络、开放公共资源等等方向层出不穷,使用方式也开始进行通证激励式的探索。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="97a2">但 P2P 网络仍非主流。近 20 年来网络基础设施的发展使得普通个人能够接入高速宽带网络,大型机房里每个虚拟主机甚至都可以通过万兆的带宽为用户提供服务,这催生了一系列新生代信息传播方式和娱乐途径。互联网人在产品模式上都探索空间大大增加,人们在尽情享受中心化服务带来的便捷与乐趣,去中心化和点对点的需求在 Web2.0 时代大力发展的背景下也显得不那么重要了。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="c569">但 P2P 技术本身并没有被抛弃,甚至还在幕后为互联网服务着。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="3bf1">Web2.0 大互联网时代的点对点</h1><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="3659">P2P CDN 边缘加速</h1><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="e746">CDN</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="e701">内容分发网络(英语:Content Delivery Network 或Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="f138">例如某小型论坛网站只有一台服务器,其带宽为 10M,10M 的带宽完全可以为几百名在线的论坛用户同时提供数据传输服务。但论坛加入上传图片功能后,10M 的带宽就不堪重负了,每张图片几百 K 至几十 M 不等,90% 以上的带宽被用来传输图片,而这些图片本身是不会变化的,每个用户看到的都是相同的图片。用户加载速度也开始变慢了。此时 CDN 技术就来帮忙了,CDN 技术帮助网站主把图片存储在全世界各地的服务器上,加州的用户访问论坛时只从论坛服务器拿到帖子正文内容和其中的图片地址,而图片是从加州本地的某个服务器上传输到用户计算机的。类比法国的用户也可以从法国本地的服务器上拿到该图片。全世界的用户都在从距离自己最近的服务器加载图片,用户的加载速度变快了,论坛的服务器带宽负载也下降了。</p><figure class="lr ls lt lu ek hx dy dz paragraph-image"><div class="hy hz di ia bf ib" role="button" tabindex="0"><div class="dy dz zz"><picture><source type="image/webp"></source><source data-testid="og"></source><img alt="" class="bf ic id c" height="457" role="presentation" src="https://miro.medium.com/max/700/0*J68LQ2Nh0gwI8nac" width="700" /></picture></div></div><figcaption class="ie if ea dy dz ig ih bd b be z fs" data-selectable-paragraph="">CDN 网络结构</figcaption></figure><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="88af">边缘节点</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="39a5">上述例子中的存储和提供图片的「加州本地服务器」和「法国服务器」即被称作CDN 网络中的「边缘节点」。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="c0c6">边缘节点不仅能提供静态文件(图片、音乐、视频等不变的资源)服务,也能提供动态内容的服务。例如我们想要每一张图片加上防盗水印,水印内容为登录用户的用户名和 IP,这样可以标记来源,防止用户盗取图片发到其他网站,因此每个用户访问时看到的都是带有不同水印的图片。该服务也可以运行在边缘节点上,在边缘节点上写好加水印的代码,在用户访问时直接加好水印提供给用户。边缘节点提供动态计算服务的功能就叫做边缘计算。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="da26">P2P CDN 融合加速</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="88c2">当我们访问大型文件时,CDN 边缘节点的带宽可能也不足够用户使用,此时很多服务商开始提供 P2P CDN 融合加速服务。Youtube 等流媒体服务商就是使用此技术让用户能够无延迟播放高清视频的。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="5d12">暗光纤(Dark Fiber)是指运营商在为城市铺设光纤的时候,倾向于多铺一些。比如它们预计这个楼未来也就用 1TB 的宽带,但会在地下铺 10TB 带宽容量的设备和光纤。因为光纤铺设的成本主要来自挖地挖墙埋线,就和你家装修走线一样,开一次墙只有多铺的道理。虽然 1TB 的带宽足够目前使用,但随着用户数量的增加、用户需求的增加、互联网服务的升级,运营商预计未来一段时间内可能会用到 10 TB 的带宽。就像十年前我们都在用 10M 的宽带,但是现在大多在用 100M 以上的宽带网络了。提前铺设好冗余带宽可以降低未来施工的费用。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="3469">而这部分暗光纤带宽在目前来说是闲置的。Google 在运营商手中购买了大量的暗光纤使用权和二次售卖权。他们把这些暗光纤的带宽用来加速 YouTube 视频播放。例如当你加载一个大小为 100M 的视频时,原本 CDN 单个节点已经无法承载这样的内容加速了(因为同时可能有很多用户都在请求 CDN 节点上的大文件),但你所在的城市可能有10台 接入了暗光纤的 Youtube 小型服务器都缓存了这个视频,YouTube 便开始使用这 10 台节点和你的个人电脑通过暗光纤建立 P2P 连接,每台服务器向你发送 10M 大小的视频。从整体上来看这 10 台服务器都仅使用了很小的带宽和流量,而你却能够瞬间获得 100M 的视频文件,播放体验得到了提升。因为流量走的是暗光纤网络,没有占用公共带宽,不会影响该区域内其他用户的上网体验,可谓一举两得。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="7d1e">现如今暗光纤及其二次销售几乎被抢购一空,部分厂商发布了分润模式的带宽共享服务,即在个人路由器、电脑或智能设备上安装带宽共享软件,在闲时启动,使用个人智能设备作为缓存节点,对其他有需要对用户进行 P2P 的资源共享服务,并获得利润分成。</p><h1 class="ij ik gw bd il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg bi" data-selectable-paragraph="" id="2ce3">中心化客户端中的 P2P 直连</h1><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="51d8">虽然不是每个服务商都拥有 Google 的财力和技术水平能够使用暗光纤,但小型软件服务商仍然能够通过 P2P 技术提升用户体验。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="2679">想必大家都有这样的体验:当你和同事坐在同一个楼宇(同一内网中)时,你们在 Skype 或其他聊天软件中互传文件时的速度比你给不在同一地区的客户传输文件的速度要快得多。因为 Skype 发现你们在同一内网中,于是你们的文件传输就不需要走 Internet,而是直接建立点对点的连接,通过楼宇的路由器沟通,就可以直接传递了,而内网的带宽一半是非常大的,所以即便是几个 G 大小的文件也可以在几十秒钟之内传输完毕。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="e2d4">同样的场景也适用与广域网中,同一片社区,同一个城市,同一个 ISP 中的用户 P2P 直连传递文件通常要比经过互联网中心化服务器传输要快很多。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="0778">虽然这些软件普遍都是中心化的,脱离了中心服务器便无法运作,但是还是在这些功能上整合了 P2P,极大提升了用户体验。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="112f">最近大家都在讨论 #Nostr ,我也借此讨论一个比较少有人讨论的话题,去中心化网络的结构化和点对点特性,以 #Nostr 和 Rings Network 举例来阐述一些异同点。</p><div class="ab cl aba abb gd abc" role="separator"><span class="abd bw bk abe abf sg"></span><span class="abd bw bk abe abf sg"></span><span class="abd bw bk abe abf"></span></div><div class="gp gq gr gs gt"><h1 class="ij ik gw bd il im abg io ip iq abh is it iu abi iw ix iy abj ja jb jc abk je jf jg bi" data-selectable-paragraph="" id="e04a">Nostr 和 Rings Network</h1><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="d02f">1⃣️ 中心化,去中心化,混合式</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="3f1b">中心化网络大家都了解,像 Twitter 这样,运营者可以决定是否删除更改用户数据,如果停止运营或封禁用户,大家的虚拟资产(内容)便随之消失。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="d182">去中心化网络里最广为人知的就是比特币和以太坊,无论哪个节点下线都不影响网络的内容安全,传输安全和一致性通过加密算法保证而非人工干预。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="ac9c">混合式当前比较著名的就是 Mastodon,各个服务器之间可以相关联,不同服务器的用户可以相联系,但若某个服务器停止工作,用户的账户也便不复存在。Mastodon 在混合式网络里是偏中心化属性强一点的。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="2f71">2⃣️ Nostr 网络结构</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="7de0">Nostr 在某种程度上来说是去中心化网络,但是我更愿意表述其为混合式网络,但是是去中心化程度较高的那种。Nostr 的拓扑结构大体上是这样的:</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="c8c4">每个用户都是独立的客户端,客户端只和 relay 相连接,relay 如其字面上意义可以认为是转发节点。relay 和 relay 之间可以互相连接,但是前提是互相之间知道对方的地址,对于不知道地址的 relay 是连接不到的,只能通过其他 relay 帮助转发。一个客户端也可以连接多个 relay,这样整体上寻址和通信的效率也会提升上来。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="cb7a">我知道这些已经是老生常谈了,但是如果你不是这个领域的专家,理解起来有困难,大家可以把 Nostr 网络想象为移动网络:</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="f611">客户端就是手机,relay 就是基站(信号塔),手机(客户端)可以连接一个或多个信号塔(relay),如果连接不到任何信号塔,也就无法发送和接收信息。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="e4b4">信号塔之间当然也需要互相连接,这样才能组成一张通讯网。一个信号塔可能会连接一个或几个其他信号塔,当其中某个连接不畅的时候可以有备选,多个连接也能保证最短到达需要寻找的手机。一个信号塔大多数情况下连接了成百上千的手机,而一个手机通常只会连接到个位数的信号塔,我们称这种结构为星型网络(星型拓扑)。多个基站联合起来组成了扩展式的星型网络。这就是 Nostr 的基本网络结构。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="95a8">3⃣️ Rings Network 网络结构</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="1352">Rings Network 使用的是 Chord 环状网络,所有节点依次列成一个环,然后通过算法控制,各个节点也会和环上其他节点建立若干个链接,当某个链接断开时(例如节点退出或网络断开),算法会控制不影响其他节点运行而重新组成环和建立新的链接。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="8f12">4⃣️ 差异对比</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="13b9">各种网络结构组成都各有优势和劣势,基本上不存在本质上的优良之分,而是基于使用场景和所解决的问题采用合适的网络结构才是最优方案。这里我们谈一下两者在一些常见场景下的处理差异:</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="b79f">连接方式</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="244d">Nostr 客户端和 relay 之间的连接是基于 WebSocket 的,不允许 p2p 连接。而 Rings Network 节点间是基于 WebRTC 的,节点间可以进行 p2p 连接。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="45be">此处连接方式上可以看得出两个网络在设计上都有很强的指向性 — — 为 web 服务。浏览器目前是大家主流的互联网交互方式,脱离浏览器的 app 则会受到例如 App Store 或 Google Play 等中心化组织的审核审查,所以本身可运行在浏览器中、连接方式被浏览器默认支持是非常重要的。无论 WebSocket 还是 WebRTC,在浏览器中进行高效、并行连接,或进行流式数据传输,都是很好的选择。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="9841">与此同时,Rings Network 选择了 p2p 的方式进行连接,在传输效率上必然没有 Nostr 星型网络的中心节点群带宽状态好,但是连通性上会更胜一筹。两种去中心化网络在数据传输效率和连通性上有所不同取舍。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="0d88">节点角色</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="3867">Nostr 网络中存在中心节点(群),它们负责维护整个网络的状态;Rings Network 网络中没有中心节点,所有节点在整个网络中具有相同的角色。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="f9b3">如果网络中有恶意节点存在,两种网络均不会被钓鱼或虚假消息攻击,因为两者都是经过加密算法保证每一条消息的可靠性。但是当恶意节点的目的是监听、追踪、蓄意不传递消息位置时,在 Nostr 网络中,恶意的客户端不会造成太大影响,但是恶意的 relay 则会造成网络故障或用户隐私暴露;在 Rings Network 中,精心编排的 Chord id 恶意节点也有可能通过控制一定数量的恶意节点达成监听和追踪的目的,但是不容易造成网络故障或不可用。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="2b39">数据存储</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="22c1">Nostr 网络中,数据存储在 relay 节点;Rings Network 网络中,数据分布存储在整个网络中的各个节点,不过目前而言 Rings Network 的 DHT 暂且没有节点连接信息以外的内容,以胶水协议形式使用任意第三方进行存储。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="3975">Nostr 这种设计更偏向现有区块链的节点形式,但并非所有 relay 都对所有消息进行持久化,是一种在成本和效率中有所兼顾的方案。而 Rings Network 本身没有这种功能,依赖第三方在形式上为开发者提供了更多灵活的选择、降低了开发难度,不过同时也舍弃了网络本身的功能。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="55ce">数据查询</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="38ae">Nostr 网络中,数据查询需要经过中心节点;Rings Network 网络中,数据查询可以通过环状网络中的任意节点进行。因此大多数情况下 Nostr 查询吞吐量较高,而查询较为中心化,relay 节点性能要求、网络要求均较高,Rings Network 平均查询吞吐量则较低,但是不会收到单点退出网络而造成数据丢失。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="bd62">可靠性</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="464c">Nostr 网络的可靠性取决于 relay 节点的可靠性,如果中心节点故障,整个网络将受到影响;Rings Network 网络的可靠性较高,即使一个或多个节点故障,整个网络仍然能够正常工作。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="d116">当遭遇单点故障时,主要取决于故障点属性。Nostr 网络中,如果故障点发生在 relay 节点上,大量客户端将受到影响,如果多个 relay 节点遭遇故障,可能会造成网络分裂成几部分,甚至整个网络瘫痪。而 Rings Network 遭遇单点故障时则表现较好,因为各个节点关系对等,即使 50% 节点遭遇故障仍能保持 95% 以上的可用性。</p><h2 class="mz ik gw bd il na nb nc ip nd ne nf it js ng nh ix jw ni nj jb ka nk nl jf nm bi" data-selectable-paragraph="" id="0e8e">效率</h2><p class="pw-post-body-paragraph jh ji gw jj b jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke gp bi" data-selectable-paragraph="" id="22e0">Nostr 网络的效率可能受到中心节点的限制,数据的查询和存储都需要经过中心节点;Rings Network 网络的效率较高,数据的查询和存储都可以通过任意节点进行。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="0011">Nostr 网络中随着网络的发展壮大,客户端数量和 relay 数量的比值如果一直较为均衡,则不容易出现堵塞,但如果客户端数量剧增而 relay 数量和质量没有跟上网络发展的速度,瘫痪的情况则有可能发生。不过在理想状态下,整体传输效率较高,速度也较快,但是即使在这种情况下,随着网络中消息包数量剧增,很容易造成类似 DDOS 效果的消息风暴出现,可能会拖垮整个网络。</p><p class="pw-post-body-paragraph jh ji gw jj b jk kf jm jn jo kg jq jr js kh ju jv jw ki jy jz ka kj kc kd ke gp bi" data-selectable-paragraph="" id="dfb0">Rings Network 网络则相反,如果节点数量剧增,则网络效率和传输质量会有所提升,理论上节点越多连通性越好,相应的多点传输带来的带宽效应也会体现;而如果节点数量较少,偏僻节点则可能无法获得很好的体验。但随着节点数量增加顺势导致的消息量增加时,因为点对点传输的缘故,消息风暴出现的可能性非常低。</p></div> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-37246932866810275142023-02-02T18:10:00.000+08:002023-02-20T20:32:57.912+08:00科学上网 <a href="https://github.com/haoel/haoel.github.io"><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span><span><em>来自 </em></span>https://github.com/haoel/haoel.github.io </a><br /><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91">科学上网</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#0-%E5%BA%8F">0. 序</a></li><li><a href="https://github.com/haoel/haoel.github.io#1-%E8%8B%B1%E6%96%87%E8%83%BD%E5%8A%9B">1. 英文能力</a></li><li><a href="https://github.com/haoel/haoel.github.io#2-%E8%B4%AD%E4%B9%B0vps">2. 购买VPS</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#21-%E5%B8%B8%E8%A7%84vps">2.1 常规VPS</a></li><li><a href="https://github.com/haoel/haoel.github.io#22-cn2-%E7%BA%BF%E8%B7%AF">2.2 CN2 线路</a></li><li><a href="https://github.com/haoel/haoel.github.io#23-ncp-%E7%BA%BF%E8%B7%AF">2.3 NCP 线路</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#3-%E6%90%AD%E5%BB%BA%E7%9B%B8%E5%85%B3%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1">3. 搭建相关代理服务</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#31-%E8%AE%BE%E7%BD%AEdocker%E6%9C%8D%E5%8A%A1">3.1 设置Docker服务</a></li><li><a href="https://github.com/haoel/haoel.github.io#32-%E5%BC%80%E5%90%AF-tcp-bbr-%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6%E7%AE%97%E6%B3%95">3.2 开启 TCP BBR 拥塞控制算法</a></li><li><a href="https://github.com/haoel/haoel.github.io#33-%E7%94%A8-gost-%E8%AE%BE%E7%BD%AE-https-%E6%9C%8D%E5%8A%A1">3.3 用 Gost 设置 HTTPS 服务</a></li><li><a href="https://github.com/haoel/haoel.github.io#34-%E8%AE%BE%E7%BD%AE-shadowsocks-%E6%9C%8D%E5%8A%A1">3.4 设置 ShadowSocks 服务</a></li><li><a href="https://github.com/haoel/haoel.github.io#35-%E8%AE%BE%E7%BD%AEl2tpipsec%E6%9C%8D%E5%8A%A1">3.5 设置L2TP/IPSec服务</a></li><li><a href="https://github.com/haoel/haoel.github.io#36-%E8%AE%BE%E7%BD%AE-pptp-%E6%9C%8D%E5%8A%A1">3.6 设置 PPTP 服务</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#4-%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AE%BE%E7%BD%AE">4. 客户端设置</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#41-gost-%E5%AE%A2%E6%88%B7%E7%AB%AF">4.1 gost 客户端</a></li><li><a href="https://github.com/haoel/haoel.github.io#42-shadowsocks-%E5%AE%A2%E6%88%B7%E7%AB%AF">4.2 Shadowsocks 客户端</a></li><li><a href="https://github.com/haoel/haoel.github.io#43-vpn-%E5%AE%A2%E6%88%B7%E7%AB%AF">4.3 VPN 客户端</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#5-%E6%B5%81%E9%87%8F%E4%BC%AA%E8%A3%85%E5%92%8C%E5%85%B6%E5%AE%83%E6%96%B9%E5%BC%8F">5. 流量伪装和其它方式</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#51-v2ray">5.1 V2Ray</a></li><li><a href="https://github.com/haoel/haoel.github.io#52-brook">5.2 Brook</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#6-%E9%92%88%E5%AF%B9-ip-%E8%A2%AB%E5%B0%81%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88">6. 针对 IP 被封的解决方案</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#61-cloudflare">6.1 Cloudflare</a></li><li><a href="https://github.com/haoel/haoel.github.io#62-v2ray">6.2 V2Ray</a></li><li><a href="https://github.com/haoel/haoel.github.io#63-%E8%A1%A5%E5%85%85">6.3 补充</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#7-%E5%AE%B6%E7%94%A8%E9%80%8F%E6%98%8E%E7%BD%91%E5%85%B3">7. 家用透明网关</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#71-openwrt-%E8%B7%AF%E7%94%B1%E5%99%A8">7.1 OpenWRT 路由器</a></li><li><a href="https://github.com/haoel/haoel.github.io#72-%E9%80%9A%E8%BF%87%E6%A0%91%E8%8E%93%E6%B4%BE%E5%81%9A%E6%97%81%E8%B7%AF%E7%BD%91%E5%85%B3">7.2 通过树莓派做旁路网关</a></li><li><a href="https://github.com/haoel/haoel.github.io#73-%E5%AE%89%E8%A3%85-clash">7.3 安装 Clash</a></li><li><a href="https://github.com/haoel/haoel.github.io#74-%E8%AE%BE%E7%BD%AE-iptables-%E8%BD%AC%E5%8F%91">7.4 设置 iptables 转发</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#8-%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83%E9%80%8F%E6%98%8E%E7%BD%91%E5%85%B3">8. 数据中心透明网关</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#81-aws-%E7%BD%91%E7%BB%9C%E6%9E%84%E5%BB%BA">8.1 AWS 网络构建</a></li><li><a href="https://github.com/haoel/haoel.github.io#82-%E5%AE%89%E8%A3%85-clash">8.2 安装 Clash</a></li><li><a href="https://github.com/haoel/haoel.github.io#83-%E9%85%8D%E7%BD%AE%E7%A7%81%E6%9C%89%E5%AD%90%E7%BD%91%E4%B8%AD%E7%9A%84-ec2">8.3 配置私有子网中的 EC2</a></li><li><a href="https://github.com/haoel/haoel.github.io#84-%E7%A7%81%E6%9C%89%E5%AD%90%E7%BD%91%E4%B8%AD%E7%9A%84-kubernetes">8.4 私有子网中的 Kubernetes</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#9-%E5%85%B6%E5%AE%83">9. 其它</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#91-%E5%85%B6%E5%AE%83%E6%96%B9%E5%BC%8F">9.1 其它方式</a></li><li><a href="https://github.com/haoel/haoel.github.io#92-%E6%90%AD%E5%BB%BA%E8%84%9A%E6%9C%AC">9.2 搭建脚本</a></li></ul></li><li><a href="https://github.com/haoel/haoel.github.io#10-%E4%BB%A3%E7%90%86%E6%8A%80%E5%B7%A7">10. 代理技巧</a><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io#101-http-%E9%9A%A7%E9%81%93">10.1 HTTP 隧道</a></li><li><a href="https://github.com/haoel/haoel.github.io#102-ssh-%E9%9A%A7%E9%81%93">10.2 SSH 隧道</a></li><li><a href="https://github.com/haoel/haoel.github.io#103-github--git-ssh-%E4%BB%A3%E7%90%86">10.3 Github / Git SSH 代理</a></li></ul></li></ul></li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#0-序" id="user-content-0-序"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">0. 序</h2><p dir="auto">首先,我们先明确一下,我科学上网的目的主要是为了学习、工作、交友、查资料、和丰富自己的眼界,不是其它的事。</p><p dir="auto">对我来说,科学上网很重要,下面罗列一下需要科学上网,我才能真正学习工作和生活的网站:</p><ul dir="auto"><li>Youtube 和 Vimeo 上的各种大会和教学视频,除了我自己要学,我的孩子也要学。</li><li>Wikipedia 维基百科是我目前唯一信得过的百科全书,我在上面可以比较系统地翻阅各种词条。</li><li>SlideShare 上有很多的技术文档和资料的PPT,是我的知识学习的地方。</li><li>Quora 问答网站,在上面有很多有趣的问答。</li><li>博客和论文,很多博客和论文站点都被墙了,比如:Blogspot 和 Medium。</li><li>Google 的各种服务,比如:Gmail, Map, Docs,Driver,照片,图片搜索,Voices,论文搜索……包括Google官方的各种技术文档……</li><li>一些云服务,比如:Dropbox,IFTTT,Imgur,archive.org……</li><li>Twitter 上 Follow 一些牛人和一些官方账号,比如:AWS、Docker……</li><li>社交 Facebook, Telegram, Whatsapp, Slack……,有一些我在国外的亲戚和朋友……</li><li>Reddit 是一个聚合网站,一个新闻和文章的集散地,你可以认为是各种频道的今日头条……</li><li>Pinterest 和 Instagram 上面有很多不错的图片和视频新闻,是我减压力的地方……</li><li>新闻,如BBC。 BBC是全球比较出众的媒体,有太多的有价值资源和内容了,比如纪录片、学英文……</li><li>编程,有很多编程的场景需要翻墙,比如,Go语言编程时的 go get 中的很多库是放在 Google的服务器上, 然而Google是全部被墙,包括 Android 和其它一些文档和资源也是一样。包括 SourceForge 的某些项目也需要科学上网,Docker Registry也有部分被墙,还有偶尔抽风的Github,以及不能访问的gist……</li><li>……等等</li></ul><p dir="auto">是的,我的互联网不是——全是骗子的百度、充满广告的微信朋友圈、质量低下的公众号、娱乐至死的新浪微博、只有抖机灵和“怎么看XX”的知乎、毫无营养的今日头条…… 在这样的网络空间里,我真的无法生存…… 这根本不是互联网,不是为我服务的互联网,而是在消费我的互联网,是让我变傻变笨的互联网…… 我不能忍,因为它影响到了我的生存……</p><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#1-英文能力" id="user-content-1-英文能力"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">1. 英文能力</h2><p dir="auto"><strong>首先,你应该对英文读写没什么问题!</strong></p><p dir="auto">为什么这么说?<strong>这主要是针对计算机相关的知识,逻辑是这样的,如果你上了Google还是在用中文关键词,那么你好不容易出来了,结果又回去了,所以没什么意义。</strong> 换言之,科学上网的目的是为了进入广阔的世界范围与全世界的人交流,所以,英文是必备的,如果你英文有问题,VPN过去的用处也不大。</p><p dir="auto">所以,我把这个前提条件放在第一的位置,就是说—— <strong>真正的墙不是GFW,而是人的大脑!</strong> 意思是,屏蔽你获得信息能力的不是墙,而很大一部分则是我们自己的语言能力!</p><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#2-购买vps" id="user-content-2-购买vps"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">2. 购买VPS</h2><p dir="auto">然后,你需要一个VPS。 在这里,强烈建议通过自建的方式,可能成本会比托管的“机场”要高一些,而且还很麻烦,但是,在安全性方面会比较好一些。自己动手,自力更生,让人有更多的安全感。</p><p dir="auto">(注:<em>当然,你也可以直接购买一些科学上网的服务,但我这里不推荐了,一方面是广告,另一方面通常这样的服务非常的不稳定,而且也容易被代理方做中间人攻击</em>)</p><p dir="auto"><strong>现在你买一台VPS也不贵了,也就是一个月10美金左右(70元),我个人觉得一个月花70元钱不算奢侈的事,而且会让你的生活质量得得改善。当然,线路好的得需要多花一些钱。</strong>。</p><p dir="auto">(注:<em>我现在每个月投入在科学上网上的成本大概在不到500元人民币左右,常备3-5个不同国家的VPS,因为国内的网络路由经常性的变化,所以,为了确保总是有一条快的,所以,得多备几个</em>)。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#21-常规vps" id="user-content-21-常规vps"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">2.1 常规VPS</h3><p dir="auto">对于 VPS,下面是一些常规选项。</p><ul dir="auto"><li><a href="https://lightsail.aws.amazon.com/" rel="nofollow">AWS LightSail</a> 是一个非常便宜好用的服务,最低配置一个月 $3.5 美金,流量不限,目前的Zone不多,推荐使用日本,新加坡或美国俄勒冈(支持银联卡)。现对 2021/8/7 之后使用 Lightsail 的用户提供3个月的免费试用。</li><li><a href="https://aws.amazon.com/cn/" rel="nofollow">AWS EC2</a>香港、日本或韩国申请个免费试用一年的EC2 VPS (支持银联卡)</li><li><a href="https://cloud.google.com/" rel="nofollow">Google Cloud Platform</a>提供免费试用,赠送300刀赠金(需要国际信用卡)</li><li><a href="https://www.linode.com" rel="nofollow">Linode</a>买个一月USD5刀的VPS</li><li><a href="https://www.conoha.jp/zh/" rel="nofollow">Conoha</a>上买一个日本的VPS,一个月900日元 (可以支付宝)</li><li><a href="https://www.vultr.com" rel="nofollow">Vultr</a>上买一个日本的VPS,一个月5刀 (可以支付宝)(注:据说被墙的IP太多)</li><li><a href="https://www.oracle.com/cloud/free/" rel="nofollow">Oracle Cloud</a>两台VPS无限期使用,可选美日韩等地(需要国际信用卡)</li></ul><blockquote><p dir="auto"><strong>注意</strong></p><ul dir="auto"><li><p dir="auto">在中国,因为有太多的网络提供商,所以,国内的网络也是很奇葩的,可以看到的是,不同的地方,不同的网络,到不同的国家完全不一样,而且还经常性地调整路由,所以,经常性地有时候快有时候慢,简直就是随机的。所以,像我这样要求比较高的人,一般会备3-5个不同国家地区的VPS,以保障上网的速度。</p></li><li><p dir="auto">香港网速应该是比较好的,但是香港的成本也是比较高的。台湾的网速也是不错的,日本的网速其次,新加坡再次之,然后是美国的东海岸。但是,因为线路的问题,如果没有为中国区优化的线路,丢包率是非常大的,日本区 ping 值虽然很低,但是经常性的丢包,好的线路的美国的 ping 值虽然大,但是也会飞快。</p></li><li><p dir="auto">日本区的网络质量并不一定很好,有时候快的飞快,但有时候会有很大的丢包率(不同的网络不一样),有时候会很慢。上述的这几个VPS服务商中,AWS韩国和日本会好点,然后是 <a href="https://www.linode.com/" rel="nofollow">Linode</a>,最后是 <a href="https://www.vultr.com/" rel="nofollow">Vultr</a>(如果你有更好的,请推荐)</p></li><li><p dir="auto">Google Cloud Platform - GCP 的香港和台湾节点也是很快的。但是你要能买GCP的主机,你还得先翻墙,所以,感觉有点死锁了。所以,你可能先用 <a href="https://www.vultr.com/" rel="nofollow">Vultr</a>(按时付费)翻墙,然后再到GCP上购买。</p></li></ul></blockquote><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#22-cn2-线路" id="user-content-22-cn2-线路"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">2.2 CN2 线路</h3><p dir="auto">如果你需要更好更高速的网络服务(比如你要看 Youtube 的 1080P),那么,你需要下面的这些服务器资源了(价格也会高一些)</p><p dir="auto"><code>CN2</code> 和 <code>GIA</code> 是两个关键词。<strong>CN2 GIA</strong> 全称 China telecom Next Carrier Network- Global Internet Access 电信国际精品网络,特征是路由线路上骨干节点均为59.43开头的IP。如果想要寻找接入CN2线路的国外VPS提供商,建议使用 <code>Next Carrier Network</code> 或者 <code>CN2</code> 这个关键词搜索即可。</p><p dir="auto">多说一句, CN2本身又分为两种类型:</p><ul dir="auto"><li><p dir="auto"><strong>CN2 GT</strong>: CN2 里属于Global Transit的产品(又名GIS-Global Internet Service),在CN2里等级低,省级/出国节点为 <code>202.97</code> 开头,国际骨干节点有2~4个 <code>59.43</code> 开头的CN2节点。在出国线路上拥堵程度一般,相对于163骨干网的稍强,相比CN2 GIA,性价比也较高。</p></li><li><p dir="auto"><strong>CN2 GIA</strong>: CN2 里属于Global Internet Access的产品,等级最高,省级/出国/国际骨干节点都以<code>59.43</code>开头,全程没有<code>202.97</code>开头的节点。在出国线路上表现最好,很少拥堵,理论上速度最快最稳定,当然,价格也相对 CN2 GT 偏高。</p></li></ul><p dir="auto">关于 <code>CN2</code> 线路的主机提供商,好些都不靠谱,只推荐下面两个,首推搬瓦工。</p><ul dir="auto"><li><a href="https://bwh8.net/aff.php?aff=39384" rel="nofollow">搬瓦工</a> 这应该是美区最好的一个用来科学上网的VPS提供商了,实测飞快。购买时你需要注意VPS规格上的 <code>CN2</code> 和 <code>GIA</code> 的描述。(注:点击主页右上角的 <code>regisiter</code> 以后,你可以看到页面上方有两个导航条,在下面的导航条上点 <code>Services</code> -> <code>Order New Services</code> 就可以看到所有的列表了。买完后,你可能需要重装一下操作系统,装成64位带BBR的 )</li><li><a href="https://bill.hostdare.com/aff.php?aff=3397" rel="nofollow">Hostdare</a> 的 CN2 GIA 产品也是三网直连,KVM 和 OpenVZ 两种架构,KVM 产品长期缺货</li></ul><p dir="auto">更多的可以参考这篇文章《<a href="https://wzfou.com/cn2-gia-vps/" rel="nofollow">CN2 GIA VPS主机收集整理汇总-电信,联通,移动三网CN2 GIA线路VPS主机</a>》(注:随时间推移,这篇文章的内容可能会失效)</p><p dir="auto">重点说一下,<strong>CN2 GIA + 香港机房</strong>,你会得到巨快无比的上网速度(无论你在中国的哪个位置,无论使用哪家运营商,CN2 GIA都是最优的),然而,香港地区的VPS的确是有点贵了。在Youtube.com上看 4K 的视频毫无压力。虽然阿里云和腾讯的也有,但是被查到的风险基本上是100%,不建议使用,被抓了别怪我没警告过你。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#23-ncp-线路" id="user-content-23-ncp-线路"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">2.3 NCP 线路</h3><p dir="auto"><strong>NCP</strong> 全称 New Cross Pacific(新跨太平洋海底光缆系统)。 2018年11月底,中国到美国之间的海底光缆新开通了NCP线路,并且容量更大(系统设计容量超过80Tbps),路由更少(中国上海到美国中间路由节点只有11个,ping值110ms)。</p><p dir="auto">NCP线路全长13,000公里,连接美国俄勒冈州希尔斯伯勒,连接崇明(中国大陆),南汇(中国大陆),临港(中国大陆),釜山(韩国),头城(台湾),和丸山(日本)。</p><p dir="auto">相对于第二条中美直达海底光缆系统(跨太平洋快线,TPE),现阶段NCP线路的网络流量更少更稳定。特征是华东/中地区流量会经过NCP直达路由节点,IP地址为202.97.95.201/202。</p><p dir="auto">关于 <code>NCP</code> 线路的主机提供商,下面罗列两个(欢迎补充)</p><ul dir="auto"><li><a href="https://www.50kvm.com" rel="nofollow">50KVM VPS</a> 截止2018年12月2日KVM 产品最低价格¥81.60/月。</li><li><a href="https://t667.com/" rel="nofollow">OLVPS</a> 截止2018年12月2日KVM 产品最低价格¥22/月。(<strong>特别注意</strong> : 在 OLVPS 上的《<a href="https://olvps.com/index.php?rp=/knowledgebase/1/TOS.html" rel="nofollow">服务条款</a>》 中有一条说明:“<strong>禁止OpenV<em>P</em>N/Socks5/PPTP/L2TP等软件、公共代理</strong>”,所以,可能OLPVS并不太适合)</li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#3-搭建相关代理服务" id="user-content-3-搭建相关代理服务"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">3. 搭建相关代理服务</h2><blockquote><p dir="auto">注:如下的搭建和安装脚本可参看本库的 scripts 目录下的脚本,如: <a href="https://github.com/haoel/haoel.github.io/blob/master/scripts/install.ubuntu.18.04.sh">Ubuntu 18.04 Installation Script</a> (感谢网友 <a href="https://github.com/gongzili456">@gongzili456</a> 开发)</p></blockquote><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#31-设置docker服务" id="user-content-31-设置docker服务"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">3.1 设置Docker服务</h3><p dir="auto">首先,你要安装一个Docker CE 服务,这里你要去看一下docker官方的安装文档:</p><ul dir="auto"><li><a href="https://docs.docker.com/install/linux/docker-ce/centos/" rel="nofollow">CentOS 上的 Docker CE 安装</a></li><li><a href="https://docs.docker.com/install/linux/docker-ce/ubuntu/" rel="nofollow">Ubuntu 上的 Docker CE 安装</a></li></ul><p dir="auto">然后开始设置你的VPN/SS服务</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#32-开启-tcp-bbr-拥塞控制算法" id="user-content-32-开启-tcp-bbr-拥塞控制算法"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">3.2 开启 TCP BBR 拥塞控制算法</h3><p dir="auto">TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由Google设计,于2016年发布的拥塞算法。以往大部分拥塞算法是基于丢包来作为降低传输速率的信号,而BBR则基于模型主动探测。该算法使用网络最近出站数据分组当时的最大带宽和往返时间来创建网络的显式模型。数据包传输的每个累积或选择性确认用于生成记录在数据包传输过程和确认返回期间的时间内所传送数据量的采样率。该算法认为随着网络接口控制器逐渐进入千兆速度时,分组丢失不应该被认为是识别拥塞的主要决定因素,所以基于模型的拥塞控制算法能有更高的吞吐量和更低的延迟,可以用BBR来替代其他流行的拥塞算法,例如CUBIC。Google在YouTube上应用该算法,将全球平均的YouTube网络吞吐量提高了4%,在一些国家超过了14%。</p><p dir="auto">BBR之后移植入Linux内核4.9版本,并且对于QUIC可用。</p><p dir="auto">如果开启,请参看 《<a href="https://github.com/iMeiji/shadowsocks_install/wiki/%E5%BC%80%E5%90%AF-TCP-BBR-%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6%E7%AE%97%E6%B3%95">开启TCP BBR拥塞控制算法</a> 》</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#33-用-gost-设置-https-服务" id="user-content-33-用-gost-设置-https-服务"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">3.3 用 Gost 设置 HTTPS 服务</h3><p dir="auto"><a href="https://github.com/ginuerzh/gost">gost</a> 是一个非常强的代理服务,它可以设置成 HTTPS 代理,然后把你的服务伪装成一个Web服务器,<strong>我感觉这比其它的流量伪装更好,也更隐蔽。这也是这里强烈推荐的一个方式</strong>。</p><p dir="auto">为了更为的隐蔽,你需要一个域名(可以上 GoDaddy,但一定要使用美国版),然后使用 <a href="https://letsencrypt.org" rel="nofollow">Let's Encrypt</a> 来签 一个证书。使用 Let's Encrypt 证书你需要在服务器上安装一个 <a href="https://certbot.eff.org/instructions" rel="nofollow">certbot</a>,点击 <a href="https://certbot.eff.org/instructions" rel="nofollow">certbot</a> 这个链接,你可以选择你的服务器,操作系统,然后就跟着指令走吧。</p><p dir="auto">接下来,你需要申请一个证书(我们使用standalone的方式,然后,你需要输入你的电子邮件和你的域名):</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>$ sudo certbot certonly --standalone</pre></div><p dir="auto">证书默认生成在 <code>/etc/letsencrypt/live/<YOUR.DOMAIN.COM/></code> 目录下,这个证书90天后就过期了,所以,需要使用一个 cron job 来定期更新(稍后给出)</p><p dir="auto">接下来就是启动 gost 服务了,我们这里还是使用 Docker 的方式建立 gost 服务器。</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-c"><span class="pl-c">#!</span>/bin/bash</span><br /><br /><span class="pl-c"><span class="pl-c">#</span> 下面的四个参数需要改成你的</span><br />DOMAIN=<span class="pl-s"><span class="pl-pds">"</span>YOU.DOMAIN.NAME<span class="pl-pds">"</span></span><br />USER=<span class="pl-s"><span class="pl-pds">"</span>username<span class="pl-pds">"</span></span><br />PASS=<span class="pl-s"><span class="pl-pds">"</span>password<span class="pl-pds">"</span></span><br />PORT=443<br /><br />BIND_IP=0.0.0.0<br />CERT_DIR=/etc/letsencrypt<br />CERT=<span class="pl-smi">${CERT_DIR}</span>/live/<span class="pl-smi">${DOMAIN}</span>/fullchain.pem<br />KEY=<span class="pl-smi">${CERT_DIR}</span>/live/<span class="pl-smi">${DOMAIN}</span>/privkey.pem<br />sudo docker run -d --name gost \<br /> -v <span class="pl-smi">${CERT_DIR}</span>:<span class="pl-smi">${CERT_DIR}</span>:ro \<br /> --net=host ginuerzh/gost \<br /> -L <span class="pl-s"><span class="pl-pds">"</span>http2://<span class="pl-smi">${USER}</span>:<span class="pl-smi">${PASS}</span>@<span class="pl-smi">${BIND_IP}</span>:<span class="pl-smi">${PORT}</span>?cert=<span class="pl-smi">${CERT}</span>&key=<span class="pl-smi">${KEY}</span>&probe_resist=code:404&knock=www.google.com<span class="pl-pds">"</span></span></pre></div><p dir="auto">上面这个脚本,你需要配置:域名(<code>DOMAIN</code>), 用户名 (<code>USER</code>), 密码 (<code>PASS</code>) 和 端口号(<code>PORT</code>) 这几个变量。</p><p dir="auto">关于 gost 的参数, 你可以参看其文档:<a href="https://docs.ginuerzh.xyz/gost/" rel="nofollow">Gost Wiki</a>,上面我设置一个参数 <code>probe_resist=code:404</code> 意思是,如果服务器被探测,或是用浏览器来访问,返回404错误,也可以返回一个网页(如:<code>probe_resist=file:/path/to/file.txt</code> 或其它网站 <code>probe_resist=web:example.com/page.html</code>)</p><p dir="auto"><strong>注意</strong>:开启了探测防御功能后,当认证失败时服务器默认不会响应 <code>407 Proxy Authentication Required</code>,但某些情况下客户端需要服务器告知代理是否需要认证(例如Chrome中的 SwitchyOmega 插件)。通过knock参数设置服务器才会发送407响应。对于上面的例子,我们的<code>knock</code>参数配置的是<code>www.google.com</code>,所以,你需要先访问一下 <code>https://www.google.com</code> 让服务端返回一个 <code>407</code> 后,SwitchyOmega 才能正常工作。</p><p dir="auto"><strong>注意</strong>:如果认证信息(也就是用户名和密码)中包含特殊字符,则可以(应该是必须!否则客户端一侧会有很多不兼容)通过auth参数来设置,下面是使用 <code>auth</code> 参数的例子(注意,需要 gost 在 2.9.2+ 以上版本):</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>DOMAIN=<span class="pl-s"><span class="pl-pds">"</span>YOU.DOMAIN.NAME<span class="pl-pds">"</span></span><br />USER=<span class="pl-s"><span class="pl-pds">"</span>username<span class="pl-pds">"</span></span><br />PASS=<span class="pl-s"><span class="pl-pds">"</span>password<span class="pl-pds">"</span></span><br />PORT=443<br />AUTH=<span class="pl-s"><span class="pl-pds">$(</span>echo -n <span class="pl-smi">${USER}</span>:<span class="pl-smi">${PASS}</span> <span class="pl-k">|</span> base64<span class="pl-pds">)</span></span><br /><br />BIND_IP=0.0.0.0<br />CERT_DIR=/etc/letsencrypt<br />CERT=<span class="pl-smi">${CERT_DIR}</span>/live/<span class="pl-smi">${DOMAIN}</span>/fullchain.pem<br />KEY=<span class="pl-smi">${CERT_DIR}</span>/live/<span class="pl-smi">${DOMAIN}</span>/privkey.pem<br />sudo docker run -d --name gost \<br /> -v <span class="pl-smi">${CERT_DIR}</span>:<span class="pl-smi">${CERT_DIR}</span>:ro \<br /> --net=host ginuerzh/gost \<br /> -L <span class="pl-s"><span class="pl-pds">"</span>http2://<span class="pl-smi">${BIND_IP}</span>:<span class="pl-smi">${PORT}</span>?auth=<span class="pl-smi">${AUTH}</span>&cert=<span class="pl-smi">${CERT}</span>&key=<span class="pl-smi">${KEY}</span>&probe_resist=code:404&knock=www.google.com<span class="pl-pds">"</span></span></pre></div><p dir="auto">如无意外,你的服务就启起来了。你可以使用下面的命令验证你的 gost 服务是否正常。</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>curl -v <span class="pl-s"><span class="pl-pds">"</span>https://www.google.com<span class="pl-pds">"</span></span> --proxy <span class="pl-s"><span class="pl-pds">"</span>https://DOMAIN<span class="pl-pds">"</span></span> --proxy-user <span class="pl-s"><span class="pl-pds">'</span>USER:PASS<span class="pl-pds">'</span></span></pre></div><p dir="auto">接下来就是证书的自动化更新。</p><p dir="auto">可以使用命令 <code>crontab -e</code> 来编辑定时任务:</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code>0 0 1 * * /usr/bin/certbot renew --force-renewal<br />5 0 1 * * /usr/bin/docker restart gost<br /></code></pre></div><p dir="auto">这样,服务器就配置完成了。客户端请移动后面的客户端章节。</p><blockquote><p dir="auto"><strong>使用 Cloudflare 的注意事项</strong></p><p dir="auto">上述的方法并不支持 Cloudflare CDN,如果你想使用了 Cloudflare CDN,你需要使用 WebSocket 协议,如下所示,你需要使用 <code>mwss</code> 协议。</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>gost -L=mwss://username:password@:443<span class="pl-k">?</span>cert=/path/to/your/cert/file<span class="pl-cce">\&</span>key=/path/to/your/key/file</pre></div><p dir="auto">在 CloudFlare 上,请将TLS/SSL设置为 <strong>完全</strong></p><p dir="auto">如果你的客户端只能使用 socks 协议,你还要在客户端这边转一下:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>gost -L socks://:YourLocalPort -F mwss://username:[email protected]:443</pre></div><p dir="auto">然后在其他软件中设置socks5代理即可</p></blockquote><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#34-设置-shadowsocks-服务" id="user-content-34-设置-shadowsocks-服务"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">3.4 设置 ShadowSocks 服务</h3><p dir="auto"><strong>(注:ShadowSocks 被查的机率非常大,不推荐使用)</strong></p><p dir="auto"><strong>(如果有隧道转发,可以使用)</strong></p><p dir="auto">ShadowSocks 的 Docker 启动脚本 (其中的 <code>SS_PORT</code> 和 <code>SS_PASSWD</code> 需要重新定义一下)</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-c"><span class="pl-c">#!</span>/bin/bash</span><br /><br />SS_PORT=1984<br />SS_PASSWD=MyPasswd<br /><br />sudo docker run -dt --name ss \<br /> -p <span class="pl-smi">${SS_PORT}</span>:<span class="pl-smi">${SS_PORT}</span> mritd/shadowsocks \<br /> -s <span class="pl-s"><span class="pl-pds">"</span>-s 0.0.0.0 -p <span class="pl-smi">${SS_PORT}</span> -m aes-256-cfb -k <span class="pl-smi">${SS_PASSWD}</span> --fast-open<span class="pl-pds">"</span></span></pre></div><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#35-设置l2tpipsec服务" id="user-content-35-设置l2tpipsec服务"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">3.5 设置L2TP/IPSec服务</h3><p dir="auto"><strong>(注:VPN方式被查的机率非常大,不推荐使用)</strong></p><p dir="auto">L2TP/IPSec 的启动脚本,其中的三个环境变量 <code>USER</code>, <code>PASS</code> 和 <code>PSK</code> 需要替换一下。</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-c"><span class="pl-c">#!</span>/bin/bash</span><br /><br />USER=someone<br />PASS=password<br />PSK=psk_key<br /><br />sudo docker run -d --privileged \<br /> -e PSK=<span class="pl-smi">${PSK}</span> \<br /> -e USERNAME=<span class="pl-smi">${USER}</span> -e PASSWORD=<span class="pl-smi">${PASS}</span> \<br /> -p 500:500/udp \<br /> -p 4500:4500/udp \<br /> -p 1701:1701/tcp \<br /> -p 1194:1194/udp \<br /> siomiz/softethervpn</pre></div><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#36-设置-pptp-服务" id="user-content-36-设置-pptp-服务"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">3.6 设置 PPTP 服务</h3><p dir="auto"><strong>(注:PPTP 不安全,请不要使用)</strong></p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>sudo docker run -d --privileged --net=host<br /> -v {/path_to_file/chap-secrets}:/etc/ppp/chap-secrets \<br /> mobtitude/vpn-pptp</pre></div><p dir="auto">PPTP 使用 <code>/etc/ppp/chap-secrets</code> 文件设置用户名和密码,所以你需要给docker容器提供这个文件,下面是这个文件的示例:</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate" lang="conf"><code># Secrets for authentication using PAP<br /># client server secret acceptable local IP addresses<br /> fuckgfw * whosyourdaddy *<br /></code></pre></div><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#4-客户端设置" id="user-content-4-客户端设置"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">4. 客户端设置</h2><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#41-gost-客户端" id="user-content-41-gost-客户端"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">4.1 gost 客户端</h3><p dir="auto">大多数的代理服务都支持 https 的代理,但是我们需要智能代理(也就是该翻的时候翻,不用翻的时候不翻),那么我们可以重用 ShadowSocks 的客户端。</p><p dir="auto">对于电脑来说,你同样可以 <a href="https://github.com/ginuerzh/gost/releases">下载 gost 程序</a>,然后使用下面的命令行:</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code>gost -L ss://aes-128-cfb:passcode@:1984 -F 'https://USER:PASS@DOMAIN:443'<br /></code></pre></div><p dir="auto">这样用 gost 在你的本机启动了一个 <code>ShadowSocks</code> 的服务,然后,把请求转到你在上面配置的 HTTPS服务器上,这样就完成转接。</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code>┌─────────────┐ ┌─────────────┐ ┌─────────────┐<br />│ ShadowSocks │ │ │ │ │<br />│ Client ├──► Gost Client ├────────────► Gost Server │<br />│ (PAC Auto) │ │ │ │ │<br />└─────────────┘ └─────────────┘ └─────────────┘<br /></code></pre></div><p dir="auto"><strong>ShadowSocks Client 主要完成:自动设置操作系统代理服务器的 pac (自动设置翻墙或是不翻墙的路由)</strong></p><p dir="auto">这样,你的ShadowSocks客户端只需要简单的配置一个本机的 SS 配置就好了。</p><p dir="auto">对于手机端</p><ul dir="auto"><li>iPhone,可以考虑使用 <code>ShadowRocket</code> (需要付费),其中使用 HTTPS 的代理,配置上就好了。</li><li>Android,可以考虑使用这个Plugin - <a href="https://github.com/xausky/ShadowsocksGostPlugin">ShadowsocksGostPlugin</a></li></ul><p dir="auto"><strong>注明</strong>:如果你之前使用了Chrome插件 SwitchyOmega,如果无法直接配置HTTPS代理,具体原因可能是因为你设置了<code>probe_resist</code>以开启探测防御功能。这里,你需要在服务器端设置 <code>knock</code> 参数(参看 <a href="https://github.com/haoel/haoel.github.io#33-%E7%94%A8-gost-%E8%AE%BE%E7%BD%AE-https-%E6%9C%8D%E5%8A%A1">用 Gost 设置 HTTPS 服务</a> 中的“注意”一节 )</p><p dir="auto">或是,干脆使用gost客户端在本机启动一个 SOCKS5的代理服务用来代替(<code>gost -L socks5://:1080 -F 'https://USER:PASS@DOMAIN:443'</code>),然后在 SwitchyOmega 配置代理为'127.0.0.1:1080'即可。比如:</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#42-shadowsocks-客户端" id="user-content-42-shadowsocks-客户端"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">4.2 Shadowsocks 客户端</h3><p dir="auto">对于 Shadowsocks 客户端,可以到这里查看 <a href="https://shadowsocks.org/en/download/clients.html" rel="nofollow">Shadowsocks Clients</a></p><ul dir="auto"><li>MacOS 上你可以下载 <a href="https://github.com/shadowsocks/ShadowsocksX-NG/releases">ShadowsocksX-NG</a></li><li>Windows上你可以下载 <a href="https://github.com/shadowsocks/shadowsocks-windows/releases">Shadowsocks-Windows</a>,需要先安装 <a href="https://dotnet.microsoft.com/download/dotnet-framework-runtime" rel="nofollow">.NET Framework</a></li><li>Android的客户端,你可以用手机访问并下载 <a href="https://github.com/shadowsocks/shadowsocks-android/releases">Shadowsocks-Android</a></li><li>iPhone 端就比较麻烦了。因为国内全都被下架了。 <ol dir="auto"><li>你需要注册一个美国的苹果ID.</li><li>然后 iTunes/App Store 用这个美区的ID登录(不是退出iCloud ,而是退出App Store)</li><li>然后搜索 <code>Potatso Lite</code> ,<code>ShadowRocket</code>, <code>Wingy</code>, <code>Quantumult</code> 等。(我使用前两个)</li></ol></li></ul><blockquote><p dir="auto"><strong>注意</strong></p><ul dir="auto"><li>关于如何注册美区Apple ID账号,你可以参看如下的这几篇文章(我不保证这些文章可不可用,但是你可以自行Google)。 <ul dir="auto"><li><a href="https://zhuanlan.zhihu.com/p/36574047" rel="nofollow">5分钟注册美国区Apple ID(18年亲测有效)</a></li><li><a href="https://www.jianshu.com/p/b32da641e849" rel="nofollow">2018年6月亲测:注册美国地区苹果apple ID帐号终极教程</a></li><li><a href="https://blog.csdn.net/ziyuzhiye/article/details/82769129" rel="nofollow">iOS开发之注册美国Apple Id不需要绑定信用卡,亲测可用</a></li></ul></li></ul></blockquote><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#43-vpn-客户端" id="user-content-43-vpn-客户端"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">4.3 VPN 客户端</h3><p dir="auto">对于L2TP/IPSec,几乎所有的客户端操作系统(无论是Windows/Mac/Linux的电脑,还是iPhone/Android)都支持,你可以自行Google。</p><ul dir="auto"><li><a href="https://www.jianshu.com/p/24e48cfb574f" rel="nofollow">Mac OS X PPTP/L2TP设置教程</a></li><li><a href="http://nic.upc.edu.cn/2016/0928/c7809a132077/page.htm" rel="nofollow">Windows 7操作系统配置L2TP VPN方法</a></li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#5-流量伪装和其它方式" id="user-content-5-流量伪装和其它方式"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">5. 流量伪装和其它方式</h2><p dir="auto">无论你用VPN,SS,SSR,都有可能被识别,<strong>只有使用 HTTP over TLS 的样子,才会跟正常的流量混在一起,很难被识别</strong>,所以,目前来说,V2Ray客户端 + Nginx + V2Ray服务端的方式,或是gost的HTTPS的方式,基本上来说,在网络四层上看到的都是TLS的包,很难被识别。这种代理服务我觉得只能做探测,或是得到更多的算力来做统计学分析。所以,V2Ray 和 gost 的服务器端用 nginx 再挡一道,那么就很难被发现了。</p><blockquote><p dir="auto"><strong>注:</strong> 说句老实话,我其时并不想害怕别人知道自己的上什么样的网站,因为我觉得我访问的都是合法的网站,但是就今天这个局势我也没办法——为什么要让像我这样的光明正大的良民搞得跟偷鸡摸狗之徒一样……</p></blockquote><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#51-v2ray" id="user-content-51-v2ray"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">5.1 V2Ray</h3><p dir="auto">V2Ray 可以配置成一个非常隐蔽的代理软件。</p><ul dir="auto"><li>V2Ray 用户手册:<a href="https://www.v2fly.org" rel="nofollow">https://www.v2fly.org</a></li><li>V2Ray 项目地址:<a href="https://github.com/v2fly/v2ray-core">https://github.com/v2fly/v2ray-core</a></li></ul><p dir="auto">一般来说,祼用 V2Ray 不是一个很好的方式,现在比较流行的是使用nginx来代理,也就是 V2Ray + WebSocket + TLS + Nginx,可以参看这篇文章《<a href="https://guide.v2fly.org/advanced/wss_and_web.html" rel="nofollow">V2Ray+WebSocket+TLS+Nginx配置与使用教程</a>》(需要翻墙)。</p><p dir="auto">我个人觉得,配置起来比较复杂,而且环节太多,不如直接用 <code>gost</code> 的 https/http2 的方式配置起来简单,所以,没有放在前面。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#52-brook" id="user-content-52-brook"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">5.2 Brook</h3><p dir="auto">Brook是一个由 Go语言编写的跨平台代理软件,支持 Linux/MacOS/Windows/Android/iOS 各个平台。</p><ul dir="auto"><li>Brook Github项目:<a href="https://github.com/txthinking/brook">https://github.com/txthinking/brook</a></li><li>Github Wiki教程:<a href="https://github.com/txthinking/brook/wiki/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E(%E4%B8%AD%E6%96%87)">https://github.com/txthinking/brook/wiki/使用说明(中文)</a></li></ul><p dir="auto">服务器一行命令安装:</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code>wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/brook.sh && chmod +x brook.sh && bash brook.sh<br /></code></pre></div><p dir="auto">运行 <code>brook.sh</code> 会出菜单项,你可以按菜单项来,主要就是设置端口号,密码。很简单的,我这里就不截图了,因为这个脚本运行起来中文菜单式的。</p><p dir="auto">然后你可以在 Brook 项目的 Github 首页上下载不同平台的客户端。设置起来也很简单!</p><blockquote><p dir="auto">注意: 如果运行出现下载错误,可能是因为brook的下载文件名问题,你需要自己修改一下脚本:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-en">Download_brook</span>(){<br /> [[ <span class="pl-k">!</span> <span class="pl-k">-e</span> <span class="pl-smi">${file}</span> ]] <span class="pl-k">&&</span> mkdir <span class="pl-smi">${file}</span><br /> <span class="pl-c1">cd</span> <span class="pl-smi">${file}</span><br /> <span class="pl-k">if</span> [[ <span class="pl-smi">${bit}</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">"</span>x86_64<span class="pl-pds">"</span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span><br />- wget --no-check-certificate -N <span class="pl-s"><span class="pl-pds">"</span>https://github.com/txthinking/brook/releases/download/<span class="pl-smi">${brook_new_ver}</span>/brook<span class="pl-pds">"</span></span><br />+ wget --no-check-certificate -N <span class="pl-s"><span class="pl-pds">"</span>https://github.com/txthinking/brook/releases/download/<span class="pl-smi">${brook_new_ver}</span>/brook_linux_amd64<span class="pl-pds">"</span></span><br />+ mv brook_linux_amd64 brook<br /> <span class="pl-k">else</span><br /> wget --no-check-certificate -N <span class="pl-s"><span class="pl-pds">"</span>https://github.com/txthinking/brook/releases/download/<span class="pl-smi">${brook_new_ver}</span>/brook_linux_386<span class="pl-pds">"</span></span><br /> mv brook_linux_386 brook<br /> <span class="pl-k">fi</span></pre></div></blockquote><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#6-针对-ip-被封的解决方案" id="user-content-6-针对-ip-被封的解决方案"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">6. 针对 IP 被封的解决方案</h2><p dir="auto">花钱购买的 VPS 即便做了流量伪装依然有很大的几率 IP 被封锁,大多 VPS 服务商并不提供更换 IP 的服务,使用 CDN 可以让被封锁的 VPS 继续发挥翻墙功能。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#61-cloudflare" id="user-content-61-cloudflare"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">6.1 Cloudflare</h3><p dir="auto">Cloudflare 是一个 CDN 服务商,目前国内依然能正常的访问,可以作为跳板来实现翻墙。</p><p dir="auto">注册 Cloudflare 帐号,并有一个空闲域名(三级域名即可),交给 Cloudflare 托管并将域名指向被封的 VPS IP,注意开启 Proxied 并且 SSL-TLS 使用 Flexible 选项。</p><p dir="auto">Cloudflare 只需免费方案足以,不必花钱。</p><p dir="auto">关于优选IP,可以手动更改本地hosts文件指向最佳IP。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#62-v2ray" id="user-content-62-v2ray"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">6.2 V2Ray</h3><p dir="auto">VPS 上正常安装并配置好 V2Ray,注意两点:</p><ol dir="auto"><li>传输协议必须要使用 ws</li><li>要使用 80 或者 8080 端口</li></ol><p dir="auto">如果端口有其他用途,那么用 Nginx/Caddy 之类软件,做一个 WebSocket proxy 到 V2Ray 即可。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#63-补充" id="user-content-63-补充"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">6.3 补充</h3><p dir="auto">客户端注意使用网址来连接。</p><p dir="auto">目前支持 WebSocket 的免费 CDN 似乎只有 Cloudflare 一家,国内 CDN 服务商既不支持也不安全,不要考虑了。如果有更好的服务商欢迎补充。</p><p dir="auto">网络延迟比直连增加不少,如果是频繁操作会很痛苦。网络带宽如果运气好可能比直连还优化了,用来看 Youtube 搞不好更流畅。</p><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#7-家用透明网关" id="user-content-7-家用透明网关"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">7. 家用透明网关</h2><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#71-openwrt-路由器" id="user-content-71-openwrt-路由器"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">7.1 OpenWRT 路由器</h3><p dir="auto">所谓透明网关的意思是,一切都交给网关来做。最好的方式是你需要一个 OpenWRT 的路由器,推荐使用华硕的路由器,贵是贵一些,但是这几年用下来,非常不错。我用的是 <strong>华硕(ASUS) RT-AC68U 1900M AC 双频智能无线路由路</strong> 。</p><p dir="auto">路由器买来后,要刷一下固件。首先 Asuswrt 是华硕公司为他的路由器所开发的固件。Asuswrt-merlin是一个对Asuswrt固件二次开发进行各种改进和修正的项目。源代码在这里:<a href="https://github.com/RMerl/asuswrt-merlin">https://github.com/RMerl/asuswrt-merlin</a></p><p dir="auto">不必担心把路由器刷废了,华硕的路由器可以让你一键重置回来</p><p dir="auto"><strong>1)下载固件</strong>。先到 <a href="https://asuswrt.lostrealm.ca/download" rel="nofollow">https://asuswrt.lostrealm.ca/download</a> 下载相应的固件,并解压。(我下载的是 <code>RT-AC68U_380.61_0.zip</code> )</p><p dir="auto"><strong>2)升级固件</strong>。登录到你的路由器后台 <code>http://192.168.1.1/</code> ,在 <code>系统管理</code> -> <code>固件升级</code> 中上传固件文件(我上传的是:<code>RT-AC68U_380.61_0.trx</code>)</p><p dir="auto"><strong>3)打开 JFFS 分区</strong>。<code>系统管理</code> -> <code>系统设置</code> -> <code>Persistent JFFS2 partition</code></p><ul dir="auto"><li><code>Format JFFS partition at next boot</code> - <code>否</code></li><li><code>Enable JFFS custom scripts and configs</code> - <code>是</code></li></ul><p dir="auto"><strong>4)打开 ssh 登录</strong>。 <code>系统管理</code> -> <code>系统设置</code> -> <code>SSH Daemon</code></p><ul dir="auto"><li><code>Allow SSH password login</code> - <code>是</code></li></ul><p dir="auto">接下来,在 WiFi 路由器上安装 Clash,就可以了。</p><p dir="auto">大概的示意图如下所示。</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code> Phone/PC/Pad (无需设置)<br /> │<br /> │<br /> │ 1<br /> │<br /> ┌────────▼──────┐<br /> │ │<br /> │ WiFi Router │ (安装 Clash 网关)<br /> │ │<br /> └─────┬────┬────┘<br /> │ │<br /> │ │ 2<br /> │ └────────► 墙内 - China LAN<br /> 3 │<br /> ┌─────▼──────┐<br /> │ VPS │<br /> │ Proxy │<br /> └─────┬──────┘<br /> │<br /> │<br /> ▼<br /> 墙外 - Internet WAN<br /><br /></code></pre></div><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#72-通过树莓派做旁路网关" id="user-content-72-通过树莓派做旁路网关"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">7.2 通过树莓派做旁路网关</h3><p dir="auto">如果你的路由器不能刷 OpenWRT,也就是没法通过SSH登录上去装软件,你就用一个别的设备。比如用一个树莓派。我正好有一个很老旧的树莓派,刷了一个老旧的 Debian 7.5的操作系统。</p><p dir="auto">把它连上你的路由器上,然后,</p><ul dir="auto"><li>你需要把你设备上的IP地址、网关和DNS服务器都要手动设置到这个树莓派上。</li><li>于是,所有的路由就会通过路由器转到树莓派上,再由树莓派决定是否要走代理。</li></ul><p dir="auto">大概的示意图如下所示。</p><ul dir="auto"><li>1 --> 2 是设备把所有的请求都发给树莓派。</li><li>3 --> 3.1 或 3.2 是由树莓派来决走是否翻墙。</li></ul><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code> Phone/PC/Pad (设置"网关"和"DNS"为树莓派)<br /> │<br /> │<br /> │ 1<br /> │ (安装 Clash 网关)<br /> ┌────────▼──────┐ 2 ┌───────────┐<br /> │ ├──────────────► │<br /> │ WiFi Router │ │ 树莓派 │<br /> │ ◄──────────────┤ │<br /> └─────┬────┬────┘ 3 └───────────┘<br /> │ │<br /> │ │ 3.2<br /> │ └────────► 墙内 - China LAN<br /> 3.1 │<br /> ┌─────▼──────┐<br /> │ VPS │<br /> │ Proxy │<br /> └─────┬──────┘<br /> │<br /> │<br /> ▼<br /> 墙外 - Internet WAN<br /><br /></code></pre></div><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#73-安装-clash" id="user-content-73-安装-clash"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">7.3 安装 Clash</h3><p dir="auto">Clash 的 Github项目是:<a href="https://github.com/Dreamacro/clash">Dreamacro/clash</a> ,在它的 Release 页面上,你可以找到相关的下载。(注:在本文更新的时候,如果你需要支持 Tun,你需要下载 Clash 的 <a href="https://github.com/Dreamacro/clash/releases/tag/premium">Premium 版本</a></p><p dir="auto">Clash 支持很多翻墙协议:ShadowSocks(R), Vmess, Socks5, HTTP(s),Snell,Trojan。</p><p dir="auto">在你的 OpenWRT 或 树莓派 下用 <code>uname -m</code> 查看一下你的硬件架构是什么的,比如,我的是华硕和树莓派都是 <code>armv7l</code> 的,所以,需要下载 <code>clash-linux-armv7-....</code>的版本(注:根据 clash 官方仓库 <a data-hovercard-type="issue" data-hovercard-url="/Dreamacro/clash/issues/189/hovercard" href="https://github.com/Dreamacro/clash/issues/189">Dreamacro/clash#189</a> 系列固件不适用 armv7l 架构的 AC68U,需选择 armv5)。 下载完解压后,加个可执行权限 <code>chmod +x clash</code> 就可以运行了,不过,还差一个界面和两个配置文件,它们的目录关系如下:</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code>├── clash <- 建一个 clash 的目录<br />│ ├── clash <- 运行文件<br />│ ├── config.yaml <- 配置文件<br />│ ├── Country.mmdb <- IP地址库<br />│ └── ui <- Clash 的 UI<br />│ ├── index.html<br />│ ├── ...<br /></code></pre></div><ul dir="auto"><li><p dir="auto">UI界面可以到 <a href="https://github.com/haishanh/yacd">haishah/yacd</a> 下载。放到clash的配置目录下 <code>ui</code> 目录下</p></li><li><p dir="auto">一个是 <code>Country.mmdb</code> 这是IP地址的在哪个国家的数据库。你需要到这里下载 - <a href="https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb">Country.mmdb</a> (当然,clash启动时,会自动下载,我这里给你一个手动下载的链接)</p></li><li><p dir="auto">另一个是 <code>config.yaml</code> 文件,这个文件详细解释可参看 - <a href="https://github.com/Dreamacro/clash/wiki/configuration">官方Wiki</a></p></li></ul><p dir="auto">下面是个示例:</p><div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-ent">port</span>: <span class="pl-c1">7890</span><br /><span class="pl-ent">socks-port</span>: <span class="pl-c1">7891</span><br /><span class="pl-ent">redir-port</span>: <span class="pl-c1">7892</span><br /><span class="pl-ent">mixed-port</span>: <span class="pl-c1">7893</span><br /><span class="pl-ent">ipv6</span>: <span class="pl-c1">false</span><br /><span class="pl-ent">allow-lan</span>: <span class="pl-c1">true</span><br /><span class="pl-ent">mode</span>: <span class="pl-s">Rule</span><br /><span class="pl-ent">log-level</span>: <span class="pl-s">info</span><br /><span class="pl-ent">external-controller</span>: <span class="pl-s"><span class="pl-pds">'</span>0.0.0.0:9090<span class="pl-pds">'</span></span><br /><span class="pl-ent">external-ui</span>: <span class="pl-s">ui</span><br /><span class="pl-ent">secret</span>: <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span><br /><span class="pl-ent">tun</span>:<br /> <span class="pl-ent">enable</span>: <span class="pl-c1">true</span><br /> <span class="pl-ent">stack</span>: <span class="pl-s">system</span><br /> <span class="pl-ent">dns-hijack</span>:<br /> - <span class="pl-s">tcp://8.8.8.8:53</span><br /> - <span class="pl-s">udp://8.8.8.8:53</span><br /><span class="pl-ent">dns</span>:<br /> <span class="pl-ent">enable</span>: <span class="pl-c1">true</span><br /> <span class="pl-ent">ipv6</span>: <span class="pl-c1">false</span><br /> <span class="pl-ent">listen</span>: <span class="pl-s">0.0.0.0:53</span><br /> <span class="pl-ent">default-nameserver</span>:<br /> - <span class="pl-s">114.114.114.114</span><br /> <span class="pl-c"><span class="pl-c">#</span>enhanced-mode: redir-host</span><br /> <span class="pl-ent">enhanced-mode</span>: <span class="pl-s">fake-ip </span><span class="pl-c"><span class="pl-c">#</span>如果要玩netflix,需要使用fake-ip</span><br /> <span class="pl-ent">fake-ip-range</span>: <span class="pl-s">198.18.0.1/16</span><br /> <span class="pl-ent">nameserver</span>:<br /> - <span class="pl-s">114.114.114.114</span><br /> - <span class="pl-s">223.5.5.5</span><br /> - <span class="pl-s">tls://8.8.8.8:853</span><br /> <span class="pl-ent">fallback</span>:<br /> - <span class="pl-s">tls://8.8.8.8:853</span><br /><br /><span class="pl-c"><span class="pl-c">#</span> 两个代理服务器</span><br /><span class="pl-ent">proxies</span>:<br /> <span class="pl-c"><span class="pl-c">#</span> http</span><br /> - <span class="pl-ent">name</span>: <span class="pl-s"><span class="pl-pds">"</span>https01<span class="pl-pds">"</span></span><br /> <span class="pl-ent">type</span>: <span class="pl-s">http</span><br /> <span class="pl-ent">server</span>: <span class="pl-s">https.server.domain</span><br /> <span class="pl-ent">port</span>: <span class="pl-c1">443</span><br /> <span class="pl-ent">username</span>: <span class="pl-s">user</span><br /> <span class="pl-ent">password</span>: <span class="pl-s"><span class="pl-pds">"</span>password<span class="pl-pds">"</span></span><br /> <span class="pl-ent">tls</span>: <span class="pl-s">true </span><span class="pl-c"><span class="pl-c">#</span> https</span><br /> <span class="pl-ent">skip-cert-verify</span>: <span class="pl-c1">true</span><br /> - <span class="pl-ent">name</span>: <span class="pl-s"><span class="pl-pds">"</span>https01<span class="pl-pds">"</span></span><br /> <span class="pl-ent">type</span>: <span class="pl-s">http</span><br /> <span class="pl-ent">server</span>: <span class="pl-s">https.server.domain</span><br /> <span class="pl-ent">port</span>: <span class="pl-c1">443</span><br /> <span class="pl-ent">username</span>: <span class="pl-s">user</span><br /> <span class="pl-ent">password</span>: <span class="pl-s"><span class="pl-pds">"</span>passowrd<span class="pl-pds">"</span></span><br /> <span class="pl-ent">tls</span>: <span class="pl-s">true </span><span class="pl-c"><span class="pl-c">#</span> https</span><br /> <span class="pl-ent">skip-cert-verify</span>: <span class="pl-c1">true</span><br /><br /><span class="pl-c"><span class="pl-c">#</span> 配置 Group</span><br /><span class="pl-ent">proxy-groups</span>:<br /> <span class="pl-c"><span class="pl-c">#</span> 自动切换</span><br /> - <span class="pl-ent">name</span>: <span class="pl-s"><span class="pl-pds">"</span>auto<span class="pl-pds">"</span></span><br /> <span class="pl-ent">type</span>: <span class="pl-s">url-test</span><br /> <span class="pl-ent">proxies</span>:<br /> - <span class="pl-s">us01_https</span><br /> <span class="pl-c"><span class="pl-c">#</span>- us02_https</span><br /> <span class="pl-c"><span class="pl-c">#</span>- hk_https</span><br /> <span class="pl-c"><span class="pl-c">#</span> tolerance: 150</span><br /> <span class="pl-ent">url</span>: <span class="pl-s"><span class="pl-pds">'</span>https://www.google.com/<span class="pl-pds">'</span></span><br /> <span class="pl-ent">interval</span>: <span class="pl-c1">300</span><br /> <span class="pl-c"><span class="pl-c">#</span> 按需选择 - 可以在UI上选择</span><br /> - <span class="pl-ent">name</span>: <span class="pl-s"><span class="pl-pds">"</span>netflix<span class="pl-pds">"</span></span><br /> <span class="pl-ent">type</span>: <span class="pl-s">select</span><br /> <span class="pl-ent">proxies</span>:<br /> - <span class="pl-s">us01_https</span><br /> - <span class="pl-s">us02_https</span><br /> - <span class="pl-s">hk_https</span><br /><br /><span class="pl-ent">rules</span>:<br /><span class="pl-c"><span class="pl-c">#</span> LAN</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,local,DIRECT</span><br /> - <span class="pl-s">IP-CIDR,127.0.0.0/8,DIRECT</span><br /> - <span class="pl-s">IP-CIDR,172.16.0.0/12,DIRECT</span><br /> - <span class="pl-s">IP-CIDR,192.168.0.0/16,DIRECT</span><br /> - <span class="pl-s">IP-CIDR,10.0.0.0/8,DIRECT</span><br /><br /><span class="pl-c"><span class="pl-c">#</span> Netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,fast.com,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,api-global.netflix.com,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,netflix.com,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,netflix.net,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,nflxext.com,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,nflximg.com,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,nflximg.net,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,nflxso.net,netflix</span><br /> - <span class="pl-s">DOMAIN-SUFFIX,nflxvideo.net,netflix</span><br /><br /><span class="pl-c"><span class="pl-c">#</span> 最终规则(除了中国区的IP之外的,全部翻墙)</span><br /> - <span class="pl-s">GEOIP,CN,DIRECT</span><br /> - <span class="pl-s">MATCH,auto</span><br /></pre></div><p dir="auto">更多的规则网上可以找到很多,也可以参看这里:<a href="https://github.com/Hackl0us/SS-Rule-Snippet/blob/master/LAZY_RULES/clash.yaml">SS-Rule-Snippet/LAZY_RULES/clash.yaml</a></p><p dir="auto">这个时候你就可以启动 clash 了:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>/path/to/clash/cash -d /path/to/clash <span class="pl-k">&</span></pre></div><p dir="auto">然后,你就可以把你的上网设备上的 路由网关 和 DNS 服务器都手动地配置成这个网关就好了(OpenWRT应该不用配置了,树莓派的方式需要手动配置一下)</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#74-设置-iptables-转发" id="user-content-74-设置-iptables-转发"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">7.4 设置 iptables 转发</h3><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>iptables -t nat -N CLASH<br />iptables -t nat -A CLASH -d 10.0.0.0/8 -j RETURN<br />iptables -t nat -A CLASH -d 127.0.0.0/8 -j RETURN<br />iptables -t nat -A CLASH -d 169.254.0.0/16 -j RETURN<br />iptables -t nat -A CLASH -d 172.16.0.0/12 -j RETURN<br />iptables -t nat -A CLASH -d 192.168.0.0/16 -j RETURN<br />iptables -t nat -A CLASH -d 224.0.0.0/4 -j RETURN<br />iptables -t nat -A CLASH -d 240.0.0.0/4 -j RETURN<br />iptables -t nat -A CLASH -p tcp -j REDIRECT --to-ports 7892</pre></div><p dir="auto">然后,你可以保存一下这些 iptables 的规则</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre> iptables-save <span class="pl-k">></span> /etc/iptables.up.rules</pre></div><p dir="auto">编辑 <code>/etc/network/if-pre-up.d/iptables</code>,在网卡启动的时候加载这些规则</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-c"><span class="pl-c">#!</span>/bin/sh</span><br />/sbin/iptables-restore <span class="pl-k"><</span> /etc/iptables.up.rules</pre></div><p dir="auto">然后,再 <code>chmod +x /etc/network/if-pre-up.d/iptables</code> 加上可执行权限就好了。</p><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#8-数据中心透明网关" id="user-content-8-数据中心透明网关"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">8. 数据中心透明网关</h2><p dir="auto">这里仅针对 AWS 进行说明,其它云平台应该大同小异,大家可以补充。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#81-aws-网络构建" id="user-content-81-aws-网络构建"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">8.1 AWS 网络构建</h3><ol dir="auto"><li><p dir="auto">构建一个 <code>172.20.0.0/16</code> 的 VPC,分成两个子网:</p><ul dir="auto"><li>有公网IP的公有子网 - <code>172.20.1.0/24</code></li><li>无公网IP的私有子网 - <code>172.20.2.0/24</code></li></ul></li><li><p dir="auto">在公有子网里创建 <a href="https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/VPC_NAT_Instance.html" rel="nofollow">EC2 NAT Instance</a></p><ul dir="auto"><li>创建时,指定私网IP为 <code>172.20.1.1</code></li><li>(Option)为该实例分配弹性IP,可成为外网访问内网的跳板机</li></ul></li><li><p dir="auto">建立路由规则</p><ul dir="auto"><li>创建“互联网网关”,并把“互联网网关”添加到公有子网 <code>172.20.1.0/24</code> 的路由表中</li><li>把 EC2 NAT Instance <code>172.20.1.1</code> 添加到私有子网<code>172.20.2.0/24</code>的路由表中。</li></ul></li></ol><p dir="auto">于是整个网络就如下所示。</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate"><code> ┌──────────┐<br /> │ │<br /> │ │<br /> └──────────┘<br /> 弹性IP 互联网网关<br /> ┌───────────────┐ ▲<br /> │xxx.xxx.xxx.xxx├─┐ │<br /> └───────────────┘ │ ┌───────────┘<br /> │ │<br /> ┌───────┼──┼────────┐ ┌───────────────────┐<br /> │ │ │ │ │ │<br /> │ ┌─┴──▼──┐ │ │ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │<br /> Public Network │ │ │◄────┼───┬───┼─►└─┘ └─┘ └─┘ └─┘ │ Private Network<br /> │ └───────┘ │ │ │ │<br /> │ EC2 NAT Instance │ │ │ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │<br /> │ 172.20.1.1 │ ├───┼─►└─┘ └─┘ └─┘ └─┘ │<br /> │ │ │ │ │<br /> │ (NAT Instance) │ │ │ ┌─┐ ┌─┐ ┌─┐ │<br /> │ │ └───┼─► └─┘ └─┘ └─┘ │<br /> │ │ │ │<br /> └───────────────────┘ └───────────────────┘<br /><br /> 172.20.1.0/24 172.20.2.0/24<br /> ▲ ▲<br /> subnet │ │ subnet<br /> │ │<br /> └────────── VPC ───────────┘<br /> 172.20.0.0/16<br /></code></pre></div><p dir="auto">注:你需要认真的按照 <a href="https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/VPC_NAT_Instance.html" rel="nofollow">EC2 NAT Instance</a> 的文档进行设置这个NAT实例。尤其需要设置下面几项:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>sudo sysctl -w net.ipv4.ip_forward=1<br />sudo iptables -A FORWARD -i eth0 -j ACCEPT<br />sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</pre></div><p dir="auto">顺便科普一下:</p><ul dir="auto"><li><code>net.ipv4.ip_forward</code> 是内核参数,主要是用来把Linux当成路由器来用的参数。一般来说,一个路由器至少要有两个网络接口,一个是WAN,的一个是LAN的,为了让LAN和WAN的流量相通,需要进行内核上路由。</li><li><code>iptables -A FORWARD -i eth0 -j ACCEPT</code> 通行所有需要转发的包,只有机器成为一个路由器时,需要在两个网卡间进行网络包转发时,才需要配置这条规则。</li><li><code>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</code> 关键字 <code>MASQUERADE</code> 意思是“伪装“,NAT的工作原理是就像是一个宿舍收发室对学生宿舍一样,学生宿舍的地址外部不可见,邮递员只看得见整栋宿舍收发室的地址,邮递员把快递交给收发室,收发室再把快递转给学习宿舍(反之,如果学生要对外寄邮件,也是先到收发室,收发室传给邮局)。现在的问题是,所有的学生宿舍如何才能参与到任何快递的通信中,如果把学生宿舍地址发到外部,则没人能把信送回来。如果这个收发室是个自动化的机器人,他要干的事就是,把学生宿舍的地址换成收发室地址。这就是 <code>MASQUERADE</code> 的意思——<strong>来自具有接收方 IP 地址的本地网络到达 Internet 某处的数据包必须进行修改,也就是让发送方的地址等于路由器的地</strong>址。</li></ul><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#82-安装-clash" id="user-content-82-安装-clash"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">8.2 安装 Clash</h3><p dir="auto">在 EC2 NAT Instance 上安装 clash 透明网关,安装配置参看 <a href="https://github.com/haoel/haoel.github.io#73-%E5%AE%89%E8%A3%85-clash">7.3 安装 Clash</a> ,基本一致。</p><blockquote><p dir="auto">注:在实际操作中,没有设置 <code>iptables</code> 转发规则</p></blockquote><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#83-配置私有子网中的-ec2" id="user-content-83-配置私有子网中的-ec2"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">8.3 配置私有子网中的 EC2</h3><p dir="auto">只需要配置 <code>/etc/resolv.conf</code> 文件,把 EC2 NAT Instance 加入其中。如:</p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate" lang="conf"><code># /etc/resolv.conf<br />nameserver 172.20.1.1 #<--- 透明网关 EC2 NAT 实例<br />nameserver 172.20.0.2 #<--- AWS 的 DNS 服务<br />search [zone].compute.internal<br /></code></pre></div><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#84-私有子网中的-kubernetes" id="user-content-84-私有子网中的-kubernetes"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">8.4 私有子网中的 Kubernetes</h3><p dir="auto">K8s 里有两组 CoreDNS 部署和配置,一组是边缘的(或是叫本地的),一组是中心的。</p><ul dir="auto"><li>边缘的 Pod 名叫 <code>nodelocaldns</code>,侦听在本机。如:<code>169.254.25.10:53</code></li><li>中心的 Pod 名叫 <code>coredns</code>,侦听在 cluster IP 上,如:<code>10.233.0.3:53</code></li></ul><p dir="auto">边缘的规则会把k8s的域名 <code>cluster.local</code>, <code>in-addr.arp</code> <code>ip6.arpa</code> 转给中心的 CoreDNS 处理,其它的交给本地的 <code>/etc/resolv.conf</code> 处理。</p><p dir="auto">Kubernetes 会把如下内容打到 Pod 里的 <code>/etc/resolv.conf</code></p><div class="snippet-clipboard-content notranslate position-relative overflow-auto"><pre class="notranslate" lang="conf"><code>nameserver 169.254.25.10<br />search default.svc.cluster.local svc.cluster.local cluster.local cn-northwest-1.compute.internal<br />options ndots:5<br /></code></pre></div><p dir="auto">查看一下 <code>nodelocaldns</code> 的配置:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>$ kubectl get cm nodelocaldns -n kube-system -o yaml</pre></div><p dir="auto">我们可以看到,除了 K8s 自己的域名外,其它的都交给了本机的 <code>/etc/resolv.conf</code>,如下所示:</p><div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-s">.:53 {</span><br /> <span class="pl-s">errors</span><br /> <span class="pl-s">cache 30</span><br /> <span class="pl-s">reload</span><br /> <span class="pl-s">loop</span><br /> <span class="pl-s">bind 169.254.25.10</span><br /> <span class="pl-s">forward . /etc/resolv.conf </span><span class="pl-c"><span class="pl-c">#</span> <--- 注意这条语句</span><br /> <span class="pl-s">prometheus :9253</span><br /><span class="pl-s">}</span></pre></div><p dir="auto">然而,本机的 <code>/etc/resolv.conf</code> 里有两个 DNS,一个是我们的透明网关,一个是AWS的。而 CoreDNS 的 <code>forward</code> 策略是随机挑选,所以,这样的会导致,时而交给AWS处理,时而交给我们自己的clash处理。最终导致IP解析紊乱。</p><p dir="auto">通过以下命令进行修改:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>$ kubectl edit cm nodelocaldns -n kube-system</pre></div><p dir="auto">修改如下:(AWS的归 172.20.0.2, 其它的走我们自己的网关)</p><div class="highlight highlight-source-diff notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-mi1"><span class="pl-mi1">+</span> compute.internal:53 {</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> errors</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> cache 30</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> reload</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> loop</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> bind 169.254.25.10</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> forward . 172.20.0.2</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> prometheus :9253</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> }</span><br /> .:53 {<br /> errors<br /> cache 30<br /> reload<br /> loop<br /> bind 169.254.25.10<br /><span class="pl-md"><span class="pl-md">-</span> forward . /etc/resolv.conf</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> forward . /etc/resolv.conf {</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> policy sequential</span><br /><span class="pl-mi1"><span class="pl-mi1">+</span> }</span><br /> prometheus: 9253<br /> }</pre></div><p dir="auto">退出保存后,等大约30秒左右配置就会生效。</p><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#9-其它" id="user-content-9-其它"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">9. 其它</h2><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#91-其它方式" id="user-content-91-其它方式"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">9.1 其它方式</h3><p dir="auto">如下还有一些其它的方式(注:均由网友提供,我没有验证过)</p><p dir="auto"><a href="https://getoutline.org/en/home" rel="nofollow">Outline</a> 是由 Google 旗下 <a href="https://jigsaw.google.com/" rel="nofollow">Jigsaw</a> 团队开发的整套翻墙解决方案。Server 端使用 Shadowsocks,MacOS, Windows, iOS, Android 均有官方客户端。使用 Outline Manager 可以一键配置 DigitalOcean。其他平台例如 AWS, Google Cloud 也提供相应脚本。主要优点就是使用简单并且整个软件栈全部<a href="https://github.com/Jigsaw-Code/?q=outline">开源</a>,有专业团队长期维护。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#92-搭建脚本" id="user-content-92-搭建脚本"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">9.2 搭建脚本</h3><p dir="auto">上述的搭建和安装脚本可参看本库的 scripts 目录下的脚本(感谢网友 <a href="https://github.com/gongzili456">@gongzili456</a> 开发)</p><ul dir="auto"><li><a href="https://github.com/haoel/haoel.github.io/blob/master/scripts/install.ubuntu.18.04.sh">Ubuntu 18.04 Installation Script</a></li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#10-代理技巧" id="user-content-10-代理技巧"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">10. 代理技巧</h2><p dir="auto">看到这里,相信已经能够按照上面的教程搭建好自己的上网环境,但是灵活的应用网络,你还需要了解一技巧,比如 SOCKS 协议, http 隧道 和 ssh 网络隧道等。</p><ol dir="auto"><li><a href="https://zh.m.wikipedia.org/zh-hans/SOCKS" rel="nofollow">SOCKS 协议</a></li><li><a href="https://zh.m.wikipedia.org/zh-hans/HTTP%E9%9A%A7%E9%81%93" rel="nofollow">HTTP 隧道</a></li></ol><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#101-http-隧道" id="user-content-101-http-隧道"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">10.1 HTTP 隧道</h3><p dir="auto">常见的软件 curl , git, wget 都能通过设置 <code>HTTP_PROXY</code>,<code>HTTPS_PROXY</code>,<code>NO_PROXY</code> 来配置一个网络代理,<code>NO_PROXY</code>用来配置不需要代理的主机(多个用逗号隔开), 那么我们就可以编写一个 <code>bash </code> 函数来运行需要走代理的命令:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-en">with_proxy</span>(){<br /> HTTPS_PROXY=http://127.0.0.1:7890 HTTP_PROXY=http://127.0.0.1:7890 <span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$@</span><span class="pl-pds">"</span></span><br />}</pre></div><p dir="auto">把上面的 <code>127.0.0.1:7890</code> 改成你自己的网络代理, 将上面脚本写入到 <code>~/.bashrc</code> 中, <code>source ~/.bashrc</code> 后就能使用 <code>with_proxy</code> 这个函数了,比如我想要使用代理网络下载一个文件 <code>with_proxy wget https://....</code>, 想要使用代理网络从 <code>github</code> clone 一个项目 <code>with_proxy git clone https://...</code>, 当我们不用 <code>with_proxy</code> 这个函数的时候命令是不会走代理的,如果在 <code>windows</code> 上你也想要使用这样的功能,可以使用这个项目<a href="https://github.com/hellojukay/with-env">with-env</a>。</p><p dir="auto">另外,你也可以使用如下的两个 alias:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>SOCKS=<span class="pl-s"><span class="pl-pds">"</span>socks5://127.0.0.1:1085<span class="pl-pds">"</span></span><br /><span class="pl-c1">alias</span> proxy=<span class="pl-s"><span class="pl-pds">"</span>export http_proxy=<span class="pl-smi">${SOCKS}</span> https_proxy=<span class="pl-smi">${SOCKS}</span> all_proxy=<span class="pl-smi">${SOCKS}</span><span class="pl-pds">"</span></span><br /><span class="pl-c1">alias</span> unproxy=<span class="pl-s"><span class="pl-pds">'</span>unset all_proxy http_proxy https_proxy<span class="pl-pds">'</span></span></pre></div><p dir="auto">这样,你就可以在需要代理的时候输入 <code>proxy</code>,不需要的时候输入 <code>unproxy</code>。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#102-ssh-隧道" id="user-content-102-ssh-隧道"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">10.2 SSH 隧道</h3><p dir="auto">另外,我们可以使用 SSH Tunnel 来建立 SOCKS5 的代理(假设本地电脑无法访问,但是某台可以 SSH 的服务器能够访问外网,那么我们就可以使用如下的命令来建议翻墙代理:</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre>ssh -D 1080 -qCN username@server:port</pre></div><p dir="auto">解释:</p><ul dir="auto"><li><code>-D</code>:本机SOCKS 服务端口</li><li><code>-q</code> : quiet 模式,没有输出</li><li><code>-C</code> : 数据压缩,可以节约一些带宽</li><li><code>-N</code> : 不运行远程命令,只做端口转发</li></ul><p dir="auto">登录成功以后,本地 <code>1080</code>端口会开启一个 <code>SOCKS5</code> 协议的代理,只要配置好代理就能使用这个端口上网。</p><div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-en">with_proxy</span>(){<br /> HTTPS_PROXY=socks5://127.0.0.1:1080 HTTP_PROXY=socks5://127.0.0.1:1080 <span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$@</span><span class="pl-pds">"</span></span><br />}</pre></div><p dir="auto">如果是浏览器,配置好<code>SwitchyOmega</code>插件也能实现上外网。</p><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/haoel/haoel.github.io#103-github--git-ssh-代理" id="user-content-103-github--git-ssh-代理"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">10.3 Github / Git SSH 代理</h3><p dir="auto">现在访问 Github 速度很慢甚至不通,我们可以使用代理来加速,首先我们需要配置好代理,然后配置好 <code>git</code> 的代理,这样就能加速 <code>git clone</code> 和 <code>git push</code> 了。</p><p dir="auto">当你使用 <code>git clone ssh://[user@]server/project.git</code> 或是 <code>git clone [user@]server:project.git</code> 的时候,你是在使用 SSH 协议。你需要配置 <code>~/.ssh/config</code> 来使用代理,比如我的本地有一个Sock5代理,端口是 1085,那么我可以这样配置:</p><div class="highlight highlight-source-m68k notranslate position-relative overflow-auto" dir="auto"><pre>### github.com<br /><span class="pl-e">Host</span> github.com<br /> Hostname github.com<br /> ProxyCommand nc -x localhost:<span class="pl-c1">1085</span> %h %p<br /> # git-for-windows 下可以用 connect 代替 nc<br /> # ProxyCommand connect -S localhost:<span class="pl-c1">1085</span> %h %p</pre></div><p dir="auto">欢迎补充和改善!</p><p dir="auto">(全文完)</p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-5422531487458735952023-01-28T20:09:00.001+08:002023-02-08T11:55:22.104+08:00过年返乡之后,我是如何远程访问家中设备的?<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p style="text-indent: 0;"> 来自:<a href="https://good.news/html/4ece356a4c72f1782d6692a9dcc8cd05.html" target="_blank">https://good.news/html/4ece356a4c72f1782d6692a9dcc8cd05.html</a></p><p>今年春节,返乡过年的朋友应该都有不少吧?离开了常住的居家和办公环境,偶尔还是会碰到需要访问家中/公司设备的场景。或许是临时下载放在服务器中的文件,或许是连上住所的 NAS 和亲朋好友一起观看自己收藏的电影。</p><p>但对我来说,通过外网访问 NAS 的速度相比局域网总觉得差点意思,有没有更好的解决方案,让我身在异地也能像局域网访问那样用上家里设备呢?</p><p>这次我选择了软件定义广域网(SD-WAN)来解决这个问题,效果还算不错。通过虚拟化的技术,SD-WAN 将不同网络下的设备连接到一个局域网中,让不同设备之间高效互访。比起传统内网穿透进行跨网段设备访问,整体操作相对简单,用起来更加灵活,并且还有相当不错的访问稳定性。</p><p>本文介绍其中一种不花钱、但需要花点时间的配置方案,希望你下次也能用得上。</p><h2>SD-WAN 简评</h2><p>在 SD-WAN 解决方案这条赛道上,市面上目前可以选择的产品主要要有 Zerotier、Tailscale 以及蒲公英这么几款。</p><p><strong>关联阅读:</strong><a href="https://sspai.com/post/64586" rel="noreferrer noopener" target="_blank">身处异地也能「内网办公」,这个技巧你的团队或许能用得上</a></p><p>Zerotier 和蒲公英少数派此前已有介绍,这里简单梳理一下这些方案的优缺点:</p><h3>Zerotier</h3><ul><li>优点:可直接使用官方提供的方案快速,同时支持私有化部署</li><li>缺点: <ul><li>由于网络协议的限制,不同的网络运营商下设备连接存在较高延迟</li><li>在群晖 DSM 7 上没有图形化客户端</li><li>官方免费版存在组网限制</li></ul></li></ul><p>Zerotier 的原理其实很容易理解:通过根节点来创建一个中心服务器,加入其中的设备都需要和这个中心服务器通信,从而构建起一个虚拟局域网。由于中心服务器部署在海外,国内访问难免会出现不稳定的情况,跨运营商设备互访时丢包尤其严重。</p><h3>Tailscale</h3><ul><li>优点:跨运营商设备互访稳定性较好,客户端开源</li><li>缺点: <ul><li>控制服务器非开源软件</li><li>官方免费账户存在较多限制</li></ul></li></ul><p>相比 Zerotier,Tailscale 在底层网络逻辑上采用了 WireGuard 协议,因此不同运营商之间的设备互访的速度更佳,有公网 IP 时效果更为明显。不过和 Zerotier 的问题类似,由于中心服务器均部署在海外,网络不稳定的情况在所难免。</p><h3>蒲公英</h3><ul><li>优点:国内厂商出品,网络访问最为稳定</li><li>缺点:免费版套餐设备限制较大,必须付费升级</li></ul><p>蒲公英属于国内厂商推出的 SD-WAN,相比以上两款的海外 SD-WAN 服务,最大的优势就是中心服务器均在国内,因此单就从网络访问性上自然最佳;在没有公网 IP 的设备之间通过国内服务器进行中继服务可谓是相当稳定。不过它的缺点也很明显:免费套餐对设备限制较高,要想真正用起来必须付费。</p><p>综上,如果你想少折腾并且需要解决刚需,花点钱直接选择蒲公英付费即可。但如果你和我一样希望通过私有化部署免费、无限制地使用 SD-WAN,不妨跟随下面的流程手动配置一套属于自己的远程设备访问方案。</p><h2>HeadScale 是什么</h2><p>上面提到的服务中,Tailscale 和 Zerotier 其实都是商业化服务,免费账户服务基本够用,服务稳定性则是个大问题。</p><p>因此 Tailscale 很早之前就有了可以私有化部署的开源方案。此前由于底层网络协议的限制,私有化部署后跨运营商设备穿透失败的情况依然时有发生——直到 HeadScale 的出现。</p><figure><img alt="cf989rtb34ta2nenu850" src="https://cdn.sspai.com/editor/u_/cf989rtb34ta2nenu850" /><br /></figure><p>Headscale 是欧洲航天局的 Juan Font 使用 Go 语言开发,在 BSD 许可下发布,它基本上实现了 Tailscale 控制服务器的所有主要功能,没有任何设备数量的限制,同时可以直接借用 Tailscale 的客户端来牵线搭桥。</p><p>它唯一的缺点是目前尚没有可视化界面,也无法直接使用 Tailscale 的 iOS 客户端。考虑到我主要想实现不同区域下桌面设备的互访,针对移动端的这个小缺点倒显得不那么重要。</p><p>另外,既然我们搭建服务最终目的是「免费无限制地使用」,这次:</p><ol><li>不再云服务器来部署 HeadScale 控制服务器,而是使用家中的 NAS</li><li>需要提前联系运营商获取家中网络的公网 IP</li></ol><p>满足这两个条件,接下来就就可以部署 HeadScale 了。</p><p><strong>恭喜你找到了这篇文章的新春彩蛋!</strong></p><p>感谢大家今年对少数派的支持,点击<a href="https://support.weixin.qq.com/cgi-bin/mmsupport-bin/showredpacket?receiveuri=mwmHYyOsTjD&check_type=2#wechat_redirect" rel="noreferrer noopener" target="_blank">这里</a>领取我们精心制作的红包封面(小提示:分享到微信的文章打开更方便)。</p><p>链接中包含的红包封面数量有限,如果你来晚了,不妨留意近期的其他文章。</p><h2>在群晖上部署控制服务器</h2><p>我家中主要是使用群晖 NAS,并且部署 HeadScale 控制服务器需要有公网 IP,因此我首先需要做的是设置 DDNS 并开启相应的端口映射。DDNS 设置的操作视设备而定,开启后记得映射 8881、9090 以及 50443 这三个端口即可。</p><figure><img alt="cf989rtb34ta2ta8kedg" src="https://cdn.sspai.com/editor/u_/cf989rtb34ta2ta8kedg" /><br /></figure><p>接着我们需要添加 HeadScale 的软件安装源,这里笔者我选择了「<a href="https://imnks.com/" rel="noreferrer noopener" target="_blank">我不是矿神</a>」提供的一个第三方源:打开群晖中的「套件中心」,然后在「设置」中切换到套件来源,新增一个新的套件来源。</p><figure><img alt="cf989s5b34ta2ta8kee0" src="https://cdn.sspai.com/editor/u_/cf989s5b34ta2ta8kee0" /><br /></figure><p>名称填写「inmk」就好,这里需要注意的是,如果群晖系统版本为 DSM 6.X,位置填写 <code>https://spk.imnks.com/</code>,如果是 DSM 7.x,位置则填写 <code>https://spk7.imnks.com/</code>。</p><figure><img alt="cf989sdb34ta2nenu85g" src="https://cdn.sspai.com/editor/u_/cf989sdb34ta2nenu85g" /><br /></figure><p>回到套件中心,点击左边侧边栏切换到「社群」,找到 HeadScale 软件点击下载并安装,如果弹出警告请点击同意并安装。安装完成后我们就可以在主菜单中看到 HeadScale 了。</p><figure><img alt="cf989slb34ta2nenu860" src="https://cdn.sspai.com/editor/u_/cf989slb34ta2nenu860" /><br /></figure><p>点击 HeadScale 我们可以看到一个参数设置页面,这里面我们需要将 <code>server_url</code> 后面的 127.0.0.1 修改成 DDNS 地址,后面的端口号保持不动。另外 <code>listen_addr:</code>、<code>metrics_listen_addr:</code> 以及 <code>grpc_listen_addr:</code> 后面的 127.0.0.1 均改为 0.0.0.0。</p><p>最后直接点击保存,这时 HeadScale 服务会再次重启。</p><p>接下来我们需要创建一个分组空间来方便标识加入的设备。这里需要使用 SSH 终端来访问家中群晖,以 root 权限登录后,输入:</p><pre><code>cd /var/packages/headscale/target/bin<br /></code></pre><p>我们这里创建一个名为 <code>sspaihx</code> 的分组空间,接下来输入:</p><pre><code>headscale namespaces create sspaihx<br /></code></pre><p>紧接着我们查看一下这个命名空间是否创建成功了,输入:</p><pre><code>headscale namespaces list<br /></code></pre><p>如果看到 <code>Name</code> 里面有我们创建的这个 <code>sspaihx</code> 的分组空间就表示分组空间已经创建成功,至此我们的 HeadScale 控制服务器就已经部署完毕了。</p><figure><img alt="cf989stb34ta2la5pkmg" src="https://cdn.sspai.com/editor/u_/cf989stb34ta2la5pkmg" /><br /></figure><h2>使用 Tailscale 客户端连接</h2><p>创建好 HeadScale 控制服务器后,接下来就是将客户端连接上了。正如上面所言,我们在客户端上依旧可以使用 Tailscale 的客户端——但需要进行一番小改造。</p><h3>将 Windows 客户端连接到 HeadScale 网络中</h3><p>我们最常使用的桌面系统自然是 Windows。这里我们首先在桌面打开浏览器,然后使用浏览器访问:</p><p><code>http://刚才设置的 ip 或者域名:8881/windows</code></p><figure><img alt="cf989t5b34ta2ta8keeg" src="https://cdn.sspai.com/editor/u_/cf989t5b34ta2ta8keeg" /><br /></figure><p>在打开的页面中下载一个注册表文件,然后将其导入到系统中。紧接着去 <a href="https://tailscale.com/download/" rel="noreferrer noopener" target="_blank">Tailscale</a> 下载 Windows 客户端并安装,然后鼠标单击系统托盘处的 Tailscale 图标并选择 log in。此时会打开如下页面:</p><figure><img alt="cf989t5b34ta2ta8kef0" src="https://cdn.sspai.com/editor/u_/cf989t5b34ta2ta8kef0" /><br /></figure><p>复制 <code>headscale -n </code> 这一段命令,将其中的 <code>NAMESPACE</code> 替换成前面我们创建的分组空间名(<code>sspaihx</code>),然后再次打开 SSH 终端,使用 root 权限连接群晖并输入如下两段命令:</p><pre><code>cd /var/packages/headscale/target/bin<br /></code></pre><pre><code>headscale -n NAMESPACE nodes register --key nodekey:7f2fdxxxxxxxx<br /></code></pre><p>如果终端显示 <code>registered</code> 则表示设备已经加入,这时候在右键点击系统托盘处的 Tailscale 图标,然后点击 <code>sspaihx</code> 分组空间点击加入即可。</p><p>最后,我们回到 SSH 终端中输入:</p><pre><code>headscale nodes list<br /></code></pre><p>如果看到当前已经有设备名单,则表示已经成功将 Windows 设备加入到 HeadScale 网络了。</p><figure><img alt="cf989tdb34ta2nenu86g" src="https://cdn.sspai.com/editor/u_/cf989tdb34ta2nenu86g" /><br /></figure><h3>将群晖连接到 headScale 网络中</h3><p>群晖既然可以作为控制服务器,当然也可以作为客户端连接到控制器中。其中控制服务器软件是 HeadScale,客户端则依旧是官方的 Tailscale 客户端。</p><figure><img alt="cf989tlb34ta2ta8kefg" src="https://cdn.sspai.com/editor/u_/cf989tlb34ta2ta8kefg" /><br /></figure><p>我们需要到打开群晖的「套件中心」然后直接搜索「Tailscale」下载安装,安装完成后打开 SSH 客户端,通过 root 账户连接到群晖上并输入如下两段命令:</p><pre><code>cd /var/packages/Tailscale/target/bin<br /></code></pre><pre><code>tailscale up --login-server=http://刚才设置的 ip 或者域名:8881 --accept-dns=false<br /></code></pre><figure><img alt="cf989tlb34ta2ta8keg0" src="https://cdn.sspai.com/editor/u_/cf989tlb34ta2ta8keg0" /><br /></figure><p>输入完成之后终端会打印出一段网址,将其复制并使用浏览器打开——其实就和刚才 Windows 上的呈现的设备认证一样,同样是 <code>headscale -n</code> 一段命令,将其中的 <code>NAMESPACE</code> 替换成前面我们创建的分组空间名。然后在 SSH 终端输入如下命令:</p><pre><code>cd /var/packages/headscale/target/bin<br /></code></pre><pre><code>headscale -n NAMESPACE nodes register --key nodekey:7f2fdxxxxxxxx<br /></code></pre><p>回车后应该可以看到终端显示 <code>registered</code>,如果不确定是否加入,可以再用下面这条命令查看设备是否加入。</p><pre><code>headscale nodes list<br /></code></pre><h3>将 macOS 连接到 HeadScale 网络中</h3><p>相比 Windows ,macOS 加入 HeadScale 网络中会略微有些复杂,这里首先需要使用浏览器打开:</p><p><code>http://刚才设置的 ip 或者域名:8881/apple</code></p><figure><img alt="cf989ttb34ta136atorg" src="https://cdn.sspai.com/editor/u_/cf989ttb34ta136atorg" /><br /></figure><p>在这个页面中我们需要确定下载什么版本客户端,如果你有外区的 Apple ID 账号,这里可以直接选择 App Store 版本的 macOS 客户端,否则就只能选择 Standalone 客户端。</p><p>选择好客户端之后,首先下载对应版本的描述文件(Profiles)并双击导入系统,打开「设置 > 隐私与安全性 > 描述文件」,选择已下载的描述文件,双击安装并授权。</p><figure><img alt="cf989u5b34ta2la5pkn0" src="https://cdn.sspai.com/editor/u_/cf989u5b34ta2la5pkn0" /><br /></figure><p>最后我们再安装并启动 Tailscale 客户端:在菜单栏中点击 Tailscale 图标,然后点击 log in 打开相应的设备认证页面。</p><figure><img alt="cf989udb34ta136atos0" src="https://cdn.sspai.com/editor/u_/cf989udb34ta136atos0" /><br /></figure><p>同样是 <code>headscale -n</code> 这段命令,将其中的 <code>NAMESPACE</code> 替换成前面我们创建的分组空间名。然后直接在 macOS 打开 SSH 终端,使用 root 账户连接群晖,输入如下命令完成设备授权:</p><pre><code>cd /var/packages/headscale/target/bin<br /></code></pre><pre><code>headscale -n NAMESPACE nodes register --key nodekey:7f2fdxxxxxxxx<br /></code></pre><p>回车后看到 <code>registered</code> 表示设备已经完成添加,这时候再输入:</p><pre><code>headscale nodes list<br /></code></pre><figure><img alt="cf989ulb34ta2nenu870" src="https://cdn.sspai.com/editor/u_/cf989ulb34ta2nenu870" /><br /></figure><p>可以看到不同系统设备都已经加入到这个虚拟局域网中了,我们使用各自对应的 IP 互相 ping 一下,看看能否直接实现互访,比如使用这个内网 ip 访问群晖 DSM 系统。</p><figure><img alt="cf989ulb34ta2nenu87g" src="https://cdn.sspai.com/editor/u_/cf989ulb34ta2nenu87g" /><br /></figure><h2>结语</h2><p>通过以上方案,基于 DDNS + 动态公网 IP,在没有花费一分钱的情况下,我们实现了诸多商业 SD-WAN 软件才能获得互联效果。这种方案不仅没有设备数量限制,同时也有着不错的跨运营商互访稳定性。</p><p>另外,如果你的资金或者条件允许,也可以尝试直接购买一台云服务器来部署 HeadScale,具体的方法可以参考 <a href="https://github.com/juanfont/headscale" rel="noreferrer noopener" target="_blank">GitHub</a>。</p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-64078066303755522312023-01-28T16:44:00.004+08:002023-02-02T18:08:43.193+08:00在中国,如何安全地使用通讯软件?<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span>来自:<a href="https://zh.amnesty.org/topic/censorship-and-freedom-of-expression/using-secured-message-apps-in-china/" target="_blank">https://zh.amnesty.org/topic/censorship-and-freedom-of-expression/using-secured-message-apps-in-china/</a><h2>务必注意:使用 Telegram 不可忽略的安全配置(以IPhone版为例) </h2><ul><li>使用官方提供的安装包 </li></ul><p>Telegram客户端开放源代码后,出现了一大批第三方客户端。有的第三方客户端(已有币用、butterfly.im(蝴蝶IM)、Teleplus(v5.4.2 之前版本)、电报中文版)被爆出上传用户信息。安全起见,务必通过电报官网 [Telegram Messenger](<a href="https://telegram.org/" rel="noreferrer noopener" target="_blank">https://telegram.org/</a>) 下载使用软件。 </p><ul><li>谨慎使用中文汉化工具 </li></ul><p>电报上有很多打着提供中文汉化包实则是提供恶意软件的频道,对此需要多家小心,谨慎使用汉化工具。这里提供[Telegram 中文频道](<a href="https://t.me/tgcnz" rel="noreferrer noopener" target="_blank">https://t.me/tgcnz</a>) 提供的[汉化包](<a href="https://t.me/setlanguage/zhcncc" rel="noreferrer noopener" target="_blank">https://t.me/setlanguage/zhcncc</a>) </p><ul><li>关闭软件的定位使用权限 </li></ul><p>电报有“附近的人”功能,会通过使用手机的定位功能向附近的人显示自己的距离信息。 </p><ul><li>隐藏手机号及登录状态 <ul><li>在软件安装后第一次开启授予权限时,禁止授予通讯录权限。 </li><li>设置–>隐私与安全 <ul><li>手机号码 </li><li>谁可以看到我的手机号码?–> 没有人 </li><li>谁可以通过手机号码找到我?–> 联系人 </li></ul></li><li>上线状态 <ul><li>谁可以看到我的上线状态?–> 没有人 </li></ul></li><li>头像 <ul><li>谁能看到我的头像? –> 联系人 </li></ul></li><li>转发消息 <ul><li>转发我的消息,谁可以点击查看您的账户信息? –> 没有人 </li></ul></li><li>通话 <ul><li>谁可以和我语音视频通话?–> 联系人 </li><li>端对端通话?–> 没有人 </li></ul></li></ul></li></ul><ul><li>通过Telegram的服务器中转可以避免泄露VPN的IP地址 <ul><li>群组频道 </li><li>谁可以拉你进群组和频道?–> 联系人</li></ul></li></ul><figure><p><img alt="Screencaps-grouping_Telegram-1-1024x937.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-1-1024x937.png" /><br />Amnesty International</p><figcaption>Telegram 安全设置:隐藏手机号,登录状态</figcaption></figure><ul><li>设置用户名替代手机号 </li></ul><p>用户名可以替代电话号码添加联系人,且用户名可以随意修改。账户注册好之后用户名需要手动设置,建议用户名只在需要添加联系人的时候设置,其他时候默认为空。隐藏电话号码及用户名设置为空可以避免垃圾信息和钓鱼信息。 </p><figure><p><img alt="Screencaps-grouping_Telegram-2-615x1024.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-2-615x1024.png" /><br />Amnesty International</p></figure><ul><li>开启应用锁及二次验证 <ul><li>应用锁 <ul><li>与Signal的应用锁不同,Telegram的应用锁独立于系统锁,需要单独设定4位数字PIN码或长密码 </li></ul></li><li>二次验证</li></ul></li></ul><p>准备一个长密码一个邮箱。二次验证码是除了短信验证码之外的第二个验证方式,可以防止账户被恶意登录。邮箱作为二次验证码的恢复工具,一旦忘记二次验证码可以通过邮箱重置 。</p><figure><p><img alt="Screencaps-grouping_Telegram-3-1024x680.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-3-1024x680.png" /><br />Amnesty International</p><figcaption>Telegram 安全设置: 设置应用锁与二次验证</figcaption></figure><ul><li>设定定期清理数据和限制资源自动下载 </li></ul><p>Telegram 默认自动下载频道、群组的文件、视频、和图片,且默认保留一个月。需要手动设置“自动下载媒体”限制下载,避免下载到恶意软件或者文件。 </p><figure><p><img alt="Screencaps-grouping_Telegram-4-1024x870.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-4-1024x870.png" /><br />Amnesty International</p><figcaption>Telegram 安全设置: 定期清理数据</figcaption></figure><ul><li>查看登陆设备 </li></ul><p>电报的群聊信息和一般聊天是可以多设备同步的,如果有人成功登录了电报账户,则可以看到除了加密聊天以外的全部内容。 </p><figure><p><img alt="Screencaps-grouping_Telegram-5-1024x585.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-5-1024x585.png" /><br />Amnesty International</p><figcaption>Telegram 安全设置: 查看登录设备</figcaption></figure><ul><li>开启端对端加密会话 </li></ul><p>Telegram 的个人会话默认不开启端对端加密,需要手动打开。没有加密的信息容易被第三方截取。群组无端对端加密。 </p><figure><p><img alt="Screencaps-grouping_Telegram-6-1024x930.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-6-1024x930.png" /><br />Amnesty International</p><figcaption>Telegram 安全设置: 开启端对端加密对话</figcaption></figure><ul><li>频道及群组开启匿名回应 <ul><li>如果是频道管理员,建议关闭消息署名,默认使用频道身份发布信息:频道–>编辑–>消息署名 </li><li>如果是群组管理员,建议开启匿名管理员,默认使用群组身份发布信息 :群组–>编辑–>管理员–>管理员权限–>匿名管理员 </li></ul></li></ul><figure><p><img alt="Screencaps-grouping_Telegram-7-611x1024.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-7-611x1024.png" /><br />Amnesty International</p><figcaption>Telegram 安全设置: 频道关闭消息署名</figcaption></figure><figure><p><img alt="Screencaps-grouping_Telegram-8-610x1024.png" src="https://zh.amnesty.org/wp-content/uploads/2023/01/Screencaps-grouping_Telegram-8-610x1024.png" /><br />Amnesty International</p><figcaption>Telegram 安全设置: 群组为管理员匿名</figcaption></figure> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-68919404629056797312023-01-26T18:01:00.004+08:002023-01-29T00:22:42.106+08:00Icedrive 雲存儲功能<p> <br />来自:<a href="#">https://www.websiterating.com/zh-TW/cloud-storage/icedrive-review/</a><br /><br /> </p><p>冰驅 是鎮上的新孩子,於 2019 年推出,並不是用於在雲中存儲和共享文件的功能最豐富的服務。 但是,它正在迅速發展成為一個雲存儲強國。 Icedrive 以其低廉的終身定價、出色的安全性和尖端的驅動器安裝軟件吸引了我。 <br /></p><p>易於使用<br /><br /><a href="https://www.websiterating.com/zh-TW/go/icedrive/">註冊 Icedrive</a> 不是火箭科學; 它只需要一個電子郵件地址、密碼和全名。 許多其他雲存儲提供商允許通過 Facebook 或 Google,但這對於 Icedrive 是不可能的。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-signup-1024x409.png" /><br /><br /><br />用戶界面設計精良,外觀乾淨整潔。 它有一些很棒的美學特徵,比如能力 自定義文件夾圖標的顏色.<br /><br />顏色編碼是組織文件夾的絕佳方式,非常適合喜歡混合使用的人。 我還可以更改我的頭像,這使我的儀表板更加個性化。<img src="https://www.websiterating.com/wp-content/uploads/color-coding-1024x408.png" /><br /><br /><br />Icedrive 可以通過大多數主要瀏覽器訪問,但他們建議 Google Chrome 最適合他們的產品。<br />Icedrive 應用程序<br /><br />有多種使用 Icedrive 的方法,包括 Web 應用程序、桌面應用程序和移動應用程序. 冰驅動是 兼容 Windows、Linux 和 Mac,並且移動應用程序可在兩者上使用 Android 應用程式和 蘋果iOS (iPhone 和 iPad)。<br />Web應用程序<br /><br />Web 應用程序易於使用,並且可以選擇列表或大圖標視圖。 我更喜歡後者,因為大縮略圖預覽令人賞心悅目。<br /><br />通過右鍵單擊任何文件或文件夾,它會在頂部顯示一個菜單。 我可以通過選擇其中一個選項來管理或自定義我的文件。 將文件上傳到我的 Icedrive 輕而易舉——我只需將它們拖放到網絡應用程序中即可。<br /><br />或者,我可以通過右鍵單擊儀表板上的空格來上傳,然後會出現上傳選項。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-web-app-1024x480.png" /><br /><br />桌面應用<br /><br />桌面應用程序是一種不需要安裝的便攜式應用程序。 它使用簡單,外觀和功能與網絡應用程序大致相同。<br /><br />當我下載桌面應用程序時,它為我提供了 安裝虛擬驅動器的選項 在我的筆記本電腦上。 虛擬驅動器可以方便地自行安裝,就像一個真正的硬盤驅動器,而不會佔用我的計算機空間。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-virtual-drive.png" /><br /><br /><br />虛擬驅動器僅在 Windows 上可用 並使用 Windows 文件資源管理器界面。 它允許我管理存儲在雲中的文件,就像管理筆記本電腦上的文件一樣。<br /><br />我存儲在 Icedrive 上的文件可以使用第三方應用程序直接從虛擬驅動器編輯,例如 Microsoft Office。<br />移動應用<br /><br />移動應用程序與 Web 界面一樣時尚,彩色文件夾使其看起來很棒。 它使用起來很簡單,如果我點擊文件旁邊的菜單,它會彈出該特定項目的選項。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-mobile-app-1024x1024.jpg" /><br /><br /><br />冰驅動 自動上傳功能 允許我立即上傳我的媒體文件。 我可以選擇是否自動上傳照片、視頻或兩者。<br /><br />付費用戶可以選擇將文件發送到加密文件夾 因為他們會自動上傳。 我還可以在移動應用程序中備份我的所有文件、音頻剪輯、圖像和視頻。<br />密碼管理<br /><br />通過在網絡應用程序上訪問我的帳戶設置,我可以輕鬆管理和更改我的密碼。<img src="https://www.websiterating.com/wp-content/uploads/password-management.png" /><br /><br /><br />如果我忘記了密碼,我可以點擊 Icedrive 登錄頁面上的“忘記密碼”鏈接。 這將打開一個對話框,提示我輸入我的電子郵件地址。 當我這樣做時,Icedrive 通過電子郵件向我發送了一個密碼重置鏈接,指向一個我可以輸入新密碼的頁面。<br /><br />在使用零知識加密時,Icedrive 強調了使用令人難忘的密碼短語的重要性。 只有知道密碼的人才能訪問加密數據—— 如果忘記了,Icedrive 無法恢復加密數據.<br /><br />75TB 終身雲存儲立減 1 美元<br /><br />每月$ 1.67起<br />冰驅動安全<br /><br />Icedrive 使用 TLS/SSL 協議 這確保所有文件在傳輸過程中都是安全的。 但是,當文件到達 Icedrive 上的目的地時,默認情況下它們以未加密狀態存儲。 免費用戶必須升級才能訪問加密文件夾。<br />零知識加密<br /><br />Icedrive 中的高級安全功能非常出色,它們提供 <a href="https://icedrive.net/help/encryption/what-is-zero-knowledge-client-side-encryption#:~:text=In%20cryptography%2C%20zero-knowledge%20refers,uploaded%20to%20the%20Icedrive%20servers.">零知識,客戶端加密</a>.<br /><br />我的數據在傳輸之前和傳輸過程中都經過加密,從而降低了信息被第三方攔截的可能性。 只有收件人才能使用加密密鑰解密文件。 甚至 Icedrive 的員工也無法訪問我的數據。<br /><br />Icedrive 允許我選擇要加密的文件和文件夾,我可以讓不敏感的項目保持正常狀態。 您可能在想,為什麼不加密所有內容。 好吧,訪問未加密的文件會更快。 因此,如果沒有必要,或者您需要經常訪問,則沒有必要。<br /><br />零知識、客戶端加密是額外的安全層,僅適用於付費訂閱者。 Icedrive 使用 256 位 Twofish 加密算法 而不是標準的 AES 加密。<br /><br />Twofish 是一種對稱塊密碼,這意味著它使用一個密鑰來加密和解密,並且迄今為止未被破解。 Icedrive 聲稱 Twofish 很多 比AES算法更安全. 但是,據說它比 AES 協議更慢且效率更低。<br /><br />查看此視頻以了解對稱分組密碼的工作原理。<br />雙因素驗證<br /><br />Icedrive 還提供兩因素身份驗證 (2FA) 運用 Google 身份驗證器或 FIDO 通用第二因素 (U2F) 安全密鑰。<br /><br />您可以購買 USB、NFC 設備或智能/刷卡形式的 U2F 密鑰。 它們可以說是最安全的 2FA 方法。 如果 U2F 密鑰在物理上是安全的,則任何信息都無法以數字方式被攔截或重定向。<br /><br />還可以選擇通過短信設置兩步驗證,非常方便。 但是,此功能僅適用於高級用戶。<br />銷鎖<br /><br />我可以創建一個 移動應用程序中的四位數密碼鎖 Icedrive 要求我進入以訪問云存儲。 如果有人解鎖我的手機,他們仍然需要知道密碼才能訪問我的文件。 設置密碼鎖很容易——輸入一個令人難忘的四位數代碼,然後重新輸入以確認。<img src="https://www.websiterating.com/wp-content/uploads/pin-code-lock-747x1024.jpg" /><br /><br /><br />我擔心這個功能在我創建個人識別碼時沒有詢問我的 Icedrive 密碼。 我的手機自動登錄了。 因此,Icedrive 無法確認是我創建了代碼。<br />隱私<br /><br />Icedrive的服務器是 位於英國、德國和美國. 但是,您在註冊時沒有選擇 Icedrive 服務器位置的選項。<br /><br />由於 Icedrive 是一家總部位於英國的公司, 它必須遵守通用數據保護條例 (GDPR).<br /><br />他們的隱私政策簡短、親切且直截了當。 它避免使用任何第三方分析,並允許我選擇 Icedrive 聯繫我的方式。<br /><br />但是,Android 隱私政策確實警告說 Icedrive 使用 cookie 來提供可以改善我整體體驗的服務。 這包括記住語言偏好和首選視圖。<br /><br />關於 Icedrive 存儲的我的個人數據——我可以隨時要求查看。 我還可以請求刪除與我的帳戶相關聯的任何記錄數據。<br /><br />如果我打算刪除我的帳戶,Icedrive 會從他們的服務器中刪除我的所有數據。<br />共享與合作<br /><br />分享鏈接很容易; 右鍵單擊該文件會出現 通過電子郵件或公共鏈接訪問共享的兩個選項. 當我單擊“共享選項”時,會打開一個彈出框,我可以輸入收件人的電子郵件並添加要發送給他們的消息。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-sharing-1024x467.png" /><br /><br /><br />如果我點擊“公共鏈接”,我可以生成一個訪問鏈接,我可以復制該鏈接並通過任何通信方式發送給收件人。 還可以為鏈接創建訪問密碼和到期日期。 但是,這些選項僅適用於付費訂閱者。<br /><br />Icedrive 還為我提供了請求文件的選項,它允許人們將內容上傳到特定文件夾。 通過右鍵單擊 Icedrive 中的任何文件夾,我可以請求將文件發送到那裡。<br /><br />每當我創建文件請求鏈接時,我都需要為其設置到期日期,該日期可以是從設置之日起最多 180 天的任何日期。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-file-expiry-1024x363.png" /><br /><br /><br />Icedrive 的共享選項不幸的是我 無法設置權限. 這意味著我無法允許任何其他人編輯我的文件或將它們設置為僅供查看。 缺少的另一個功能是設置下載限制的能力。<br />SyncING<br /><br />冰驅動的 syncing 功能不是它的亮點。 沒有單獨的 Icedrive sync 文件夾,當一個項目在 sync,它作為常規項目出現在儀表板上。<br /><br />Sync 許多其他雲存儲提供商提供了文件夾。 我發現有一個 sync 文件夾更方便,更易於使用。<br /><br />Icedrive 不支持塊級 sync. 塊級 sync 允許更快的上傳,因為它只需要 sync 已更改的數據塊。 但是,不可能使用塊級 sync 使用客戶端加密,對我來說,加密更重要。<br /><br />Icedrive 使用選擇性 sync 對 存儲在我電腦上的本地文件夾和雲上的遠程文件夾之間。 我可以通過三種方式 sync 我在這兩個目的地之間的文件和文件夾:雙向:當我在遠程或本地文件夾上編輯或更改任何內容時,它將在本地和遠程反映。<br />當地的一種方式:我遠程所做的任何更改都會反映在我的本地文件夾中。<br />一種方式上雲:我對本地文件夾所做的任何更改都會反映在雲中。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-syncing-1024x567.png" /><br /><br />速度<br /><br />為了檢查 Icedrive 的傳輸速度,我使用 40.7MB 的圖像文件夾對我的基本家庭 Wifi 連接進行了簡單測試。 在開始每次上傳或下載之前,我使用 speedtest.net 來了解我的連接速度。<br /><br />在第一次上傳過程開始時,我的上傳速度為 0.93 Mbps。 初始上傳耗時 5 分 51 秒完成。 我使用相同的文件夾和 1.05 Mbps 的上傳速度完成了第二個測試。 這次我的上傳用了 5 分 17 秒。<br /><br />第一次下載圖片文件夾時,我的下載速度是15.32Mbps,耗時28秒才完成。 在第二次測試中,Icedrive 在 32 秒內完成了下載。 在這種情況下,我的下載速度為 10.75 Mbps。<br /><br />Icedrive 可以上傳和下載的速度取決於互聯網連接。 我還必須考慮到連接速度可能會在整個測試過程中波動。 考慮到這些因素,Icedrive 管理了良好的上傳和下載時間,特別是因為我的速度很低。<br /><br />75TB 終身雲存儲立減 1 美元<br /><br />每月$ 1.67起<br />文件傳輸隊列<br /><br />文件傳輸隊列允許我查看正在上傳到我的 Icedrive 的內容。 文件傳輸可以在後台運行,右下角會出現上傳圖標。 圖標顯示上傳百分比,快速點擊,我可以查看隊列。<br /><br />隊列顯示為文件夾中項目的列表視圖。 它單獨顯示每個文件傳輸的狀態,並且還在列表下方顯示倒計時時鐘。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-file-transfer-1024x468.png" /><br /><br />文件預覽<br /><br />文件預覽可用,打開後我可以像幻燈片一樣快速瀏覽它們。<br /><br />但是,Icedrive 加密文件夾中的文件不會生成縮略圖,預覽也受到限制。 縮略圖和預覽不適用於加密數據,因為 Icedrive 的服務器無法讀取它。<br /><br />可以在 Web 應用程序上查看加密文件,但必須先下載並解密文件才能顯示。<br /><br />Icedrive 表示,隨著技術的進步,他們的目標是實現更多的預覽功能。<br />文件版本控制<br /><br />文件版本控制允許您恢復、預覽和下載已刪除的文件和已更改的文件。 文件版本控制是無限的 在 Icedrive 上,無限期地存儲我的文件。 這意味著我可以將我的文件恢復到以前的版本或恢復它們,無論它們多久前被更改或刪除。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-file-versioning-1024x407.png" /><br /><br /><br />其他供應商對此功能有限制,所以如果 Icedrive 最終效仿我也不會感到驚訝。 以前,我看到的最高文件版本限制是 360 天的高級高級計劃。<br /><br />文件版本控制僅適用於 Web 和桌面應用程序。 必須逐個文件地將項目恢復到以前的版本。 沒有允許批量恢復或讓我將整個文件夾恢復到早期版本的功能。 但是,我可以從垃圾箱中檢索整個已刪除的文件夾。<br />備份精靈<br /><br />雲備份嚮導是移動應用程序的一項功能。 它讓我選擇要備份的數據類型; 選項包括圖像和視頻、文檔和音頻文件。 它還可以在文件自動備份後組織我的文件。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-data-backup-513x1024.jpg" /><br /><br /><br />備份嚮導與自動上傳功能不同。 它獨立運作; 每次需要備份新內容時,我都必須重新掃描我的設備。<br /><br />自動上傳功能只讓我選擇 sync 照片和視頻 – 備份嚮導除了可以備份圖像和視頻外,還可以備份我的文檔和音頻文件。<br />免費與高級計劃<img src="https://www.websiterating.com/wp-content/uploads/icedrive-pricing-plans-1024x473.png" /><br /><br />免費試用<br /><br /><a href="https://www.websiterating.com/zh-TW/go/icedrive/">免費計劃提供 10GB</a> 存儲空間和每月 25GB 的帶寬限制. 沒有激勵措施來獲得更多空間 Sync.com. 但我喜歡免費計劃的一點是,它為您提供 10GB 的空間,而且不會問任何問題。 您不會像許多其他雲存儲提供商那樣從一個較低的限制開始,然後通過激勵逐步提高。<br /><br />免費存儲計劃附帶標準 TLS/SSL 安全性以保護傳輸中的數據,因為加密僅適用於高級用戶。 但是,我聽說 Icedrive 可能會在不久的將來將其加密服務擴展到免費用戶。<br />保費計劃<br /><br />冰驅動的 高級選項為您提供額外的安全性,因為它們都使用客戶端、零知識加密. 您還可以訪問 高級共享功能,例如為鏈接設置超時和密碼.<br /><br />輕量套餐為您提供 150GB 的雲存儲空間 空間和每月 250GB 的帶寬。 如果這還不夠, Pro 計劃提供 1TB 的存儲空間 每月帶寬限制為 2TB。 Icedrive 的最高層是 具有 5TB 雲存儲空間的 Pro+ 計劃 和 8TB 的每月帶寬津貼。<br /><br />Icedrive 的免費和高級計劃均供個人使用,缺乏面向多個用戶和企業的設施。<br />客戶服務<br /><br />Icedrive 的客戶支持設施有限,客戶只有一種聯繫方式,即開票。 有 沒有實時聊天選項. 當我終於找到一個電話號碼時,它告訴我客戶應該通過打開支持票來與我聯繫。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-customer-support-1024x490.png" /><br /><br /><br />Icedrive 聲明他們的目標是在 24–48 小時內回复所有查詢。 我已經兩次聯繫 Icedrive,兩次都在 19 小時左右得到了回复。 然而,許多客戶並沒有這麼幸運,有些還沒有收到回复。<br /><br />支持票的積極之處在於我所有的票都記錄在我的 Icedrive 上的一個地方。 我通過電子郵件收到回复通知,但必須登錄才能查看。 我發現這很有用,因為如果我需要回看票證,我就不必去搜索我的電子郵件。<br /><br />有一個 <a href="https://icedrive.net/help">客戶支持中心</a> 其中包括常見問題的答案。 但是,我沒有發現它像 pCloud的或 Sync的支持中心。 它缺少很多信息,例如有關共享文件夾和如何使用的詳細信息 sync 對。<br />演員<br />媒體播放器<br /><br />Icedrive 有一個內置的媒體播放器,讓我很容易 無需第三方應用即可訪問我的音樂. 媒體播放器也適用於視頻文件。<img src="https://www.websiterating.com/wp-content/uploads/icedrive-media-player.png" /><br /><br /><br />但是,它不像 pCloud的音樂播放器,缺少內容隨機播放和循環播放列表等功能。 我必須手動瀏覽我的媒體,所以在旅途中使用它很有挑戰性。 使用媒體播放器時,我唯一的選擇就是改變播放速度。<br />WebDAV的<br /><br /><a href="https://webdav.io/webdav/">WebDAV的</a> (基於 Web 的分佈式創作和版本控制)是一個加密的 TLS 服務器,可用於通過 Icedrive 的所有付費計劃。 它允許我 從我的雲協作編輯和管理文件 與遠程服務器上的團隊成員。<br />Icedrive 定價計劃<br /><br />Icedrive 有三個付費計劃選項; Lite,Pro和Pro +. 訂閱按月和按年提供。 他們最近還推出了 Icedrive 終身計劃,如果您打算承諾使用 Icedrive,這可以幫助您節省一些現金。<br /><br />對於不需要大量空間但需要比免費計劃更多空間的用戶來說,輕量計劃是一個很好的選擇。 Icedrive 不提供按月訂閱的精簡版,因此購買後,您將被束縛一年。 但每年 19.99 美元,與由 <a href="https://www.websiterating.com/zh-TW/cloud-storage/sync-review/">Sync.com</a>.<br />免費試用數據傳輸:3 GB<br />儲存:10 GB<br />成本: 自由<br />精簡版計劃數據傳輸:250 GB<br />儲存:150 GB<br />月度計劃: 無法使用<br />年度計劃:每月 1.67 美元(每年收費 19.99 美元)<br />終身計劃: <a href="https://www.websiterating.com/zh-TW/go/icedrive/">$ 99</a> (一次性支付)<br />臨計劃數據傳輸:2 TB(2000 GB)<br />儲存:1 TB(1000 GB)<br />月度計劃:每月$ 4.99<br />年度計劃:每月 4.17 美元(每年收費 49.99 美元)<br />終身計劃: <a href="https://www.websiterating.com/zh-TW/go/icedrive/">$ 229</a> (一次性支付)<br />專業計劃數據傳輸:8 TB(8000 GB)<br />儲存:5 TB(5000 GB)<br />月度計劃:每月$ 17.99<br />年度計劃:每月 15 美元(每年收費 179.99 美元)<br />終身計劃: <a href="https://www.websiterating.com/zh-TW/go/icedrive/">$ 599</a> (一次性支付)<br /><br />Icedrive 定價的優點在於它 <a href="https://www.websiterating.com/zh-TW/go/icedrive/">終身選擇</a>,即一次性支付使用 Icedrive for LIFE。<br /><br />Lite 計劃的終生訂閱費用為 99 美元。 為了讓您的錢花在月度計劃上,您必須至少使用 Icedrive 五年。<br /><br />向上移動,有提供的專業計劃 <a href="https://www.websiterating.com/zh-TW/cloud-storage/best-1tb-cloud-storage/">1TB 存儲空間</a> 每月 4.99 美元或每年 49.99 美元。 終身計劃的價格為 229 美元,必須使用 55 個月才能物有所值。 相比於 pCloud2 美元的 350TB 終身計劃,看起來有點平庸。 但是,請記住零知識加密包含在所有 Premium Icedrive 計劃中,無需額外費用。<br /><br />最後,Icedrive 最廣泛的計劃是 Pro+。 此 5TB 訂閱的價格為每月 17.99 美元或每年 179.99 美元。 Pro+ 的使用壽命為 599 美元,只需三年多的時間就值得購買。<br /><br />終身訂閱非常物有所值(就像 <a href="https://www.websiterating.com/zh-TW/cloud-storage/pcloud-review/">pCloud“</a>) 並且如果您打算長期使用 Icedrive,則非常值得。<br /><br />我確實對終生解決方案以及它們是否會與時俱進有些擔憂。 由於更高的分辨率和其他圖像改進技術,文件越來越大,因此未來可能需要增加存儲容量。<br /><br />As <a href="https://www.websiterating.com/zh-TW/cloud-storage/icedrive-lifetime-worth-it/">終身計劃</a> 需要三到五年才能獲得節省,您可能需要考慮該計劃是否適合這段時間。<br /><br />沒有隱藏費用,您可以通過所有主要信用卡和借記卡支付計劃。 也可以使用比特幣付款,但僅限於 <a href="https://www.websiterating.com/zh-TW/cloud-storage/best-lifetime-cloud-storage/">終身雲存儲計劃</a>.<br /><br />如果您不喜歡這項服務,可以享受 30 天退款保證,但我建議您先嘗試免費計劃。 如果您在 30 天期限後取消訂閱,Icedrive 將不會退還未使用的服務。<br />常見問題<br />什麼是冰驅?<br /><br />冰驅 是來自英國 ID Cloud Services Ltd 的優質雲存儲服務提供商。 Icedrive 的總部位於英國斯旺西,James Bressington 是創始人兼董事總經理<br />我可以共享我的加密文件嗎?<br /><br />不,Icedrive 目前不支持共享加密文件。 這是因為收件人需要您的加密密鑰來解密文件,這會使您的雲容易受到攻擊。<br /><br />Icedrive 表示他們計劃很快創建一個公共“加密盒”。 您將能夠在您的加密文件夾中創建一個密碼盒。 它將使用與您為私人加密文件持有的密碼和密鑰不同的密碼和密鑰。 這將使用戶能夠在不損害其他數據的情況下共享特定的加密文件。<br />是否可以重置我的 Icedrice 加密密鑰?<br /><br />是的,您可以重置您的加密密鑰。 但是,重置將永久刪除存儲在 Icedrive 上的所有加密數據。<br /><br />如果您需要重置加密密鑰,請前往您的 Icedrive 帳戶設置並選擇“隱私”。 點擊“重置加密密碼”,輸入您的 Icedrive 帳戶密碼並點擊“提交”。<br /><br />請注意,一旦您單擊提交,您的加密文件和文件夾將從您的帳戶中完全刪除。<br />我可以上傳到 Icedrive 的最大文件大小是多少?<br /><br />Icedrive 的服務器使用 XFS 文件系統,這使得 上傳高達 100TB. 這比 Icedrive 提供的任何計劃都要大。 因此,您可以說文件大小的唯一限制是您的存儲限制。<br />我可以離線使用我的文件嗎?<br /><br />是的,通過創建 sync 在雲和設備上的本地文件夾之間配對,您將能夠獲得離線訪問。<br /><br />打開您的 Icedrive 桌面控制面板,然後單擊“Sync’ 選項卡創建一個’ sync 一對。’ ‘Sync pair’ 使您能夠將本地文件夾鏈接到雲文件夾。 從雲端下載文件夾後,文件將可以離線使用。 每次您可以訪問互聯網時,您的離線文件編輯都會在雲端更新。<br />Icedrive 是否存儲我的首選付款詳細信息?<br /><br />Icedrive 使用 Stripe 處理所有付款並且不存儲信用卡或借記卡信息。 所有支付數據都通過 Stripe 加密、存儲和處理。<br />Icedrive 使用安全嗎?<br /><br />是的,Icedrive 在傳輸過程中使用 TLS/SSL 協議保護文件。 為訂閱付費的用戶將獲得零知識、客戶端加密作為額外的安全層。 256 位 Twofish 加密算法繼續保護您的靜態數據。<br />什麼是最好的 Icedrive 替代品?<br /><br />Icedrive 的最佳同類替代品是 pCloud,它提供了類似的功能和幾乎相同的終身計劃。 其他流行的 Icedrive 替代品包括 Dropbox, Google 驅動器和微軟 OneDrive. </p><div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-15640152503101446172023-01-19T23:16:00.003+08:002023-01-26T17:59:01.201+08:00awesome-tools<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><h1 dir="auto">来自: <a href="https://github.com/Sailfishc/awesome-tools">https://github.com/Sailfishc/awesome-tools</a><br /></h1><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#科学上网" id="user-content-科学上网"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">科学上网</h2><ul dir="auto"><li>Mac主要使用的是Surge Mac(合租),辅助会用到Stash Mac和ClashX Pro</li><li>IOS Surge和QX都在使用,主要是都买了,手机主要用Surge(规则的一致性),iPad使用的是QX</li><li>家里的使用Mac Mini M1 + Surge Mac接管网络,使用Surgio管理规则,在家所有的设备不需要再开科学上网工具,之前使用的是R2s+Padavan固件,体验也不差,并且价格便宜</li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#mac软件" id="user-content-mac软件"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">Mac软件</h2><ul dir="auto"><li>IDEA:不用说了</li><li>IDEA插件: <ul dir="auto"><li>Code Glance:可以显示Mini Map,类似Sublime Text</li><li>Github Copilot:辅助编码,不过主要开发公司的产品,出于安全目前基本不怎么用</li><li>Grep Console:对于命令可以highlight</li><li>IdeaVim:Vim engine for JetBrains IDEs,配合的很好</li><li>ideolog:对日志查看增强,更好的看日志</li><li>Key Promoter X:显示快捷键,很赞</li><li>LeetCode Editor:可以很方便的使用LeetCode</li><li>Maven Helper:可视化Maven依赖,对于处理Maven包冲突有很大的帮助</li><li>PlantUML Integration:对于PlantUML有比较良好的支持</li><li>Rainbow Brackets:括号匹配</li></ul></li><li>终端: <ul dir="auto"><li>主要使用的还是**<a href="https://www.iterm2.com/" rel="nofollow">iTerm2</a>** + <strong><a href="https://en.wikipedia.org/wiki/Z_shell" rel="nofollow">zsh</a></strong> + <strong><a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a></strong> 的组合,也尝试了下Warp,不过还是主要使用IDEA的Terminal和iTerm2</li><li>插件: <ul dir="auto"><li>zsh-proxy:在终端代理git、ssh、npm等,加速下载速度</li></ul></li></ul></li></ul><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#开发辅助" id="user-content-开发辅助"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">开发辅助</h3><ul dir="auto"><li>Fork:Git GUI客户端,免费使用,但是会有激活提醒,类似Sublime Text的机制,主要还是用IDEA的Git工具</li><li>Postman:用于请求模拟,还有**<a href="https://paw.cloud/" rel="nofollow">Paw</a>**也不错</li><li>iHost:管理Host,<strong><a href="https://github.com/2ndalpha/gasmask">Gas Mask</a>也不错</strong></li><li>ProxyMan:抓包工具,现代化GUI,方便,可以在SetAPP中使用</li><li>DevUtil:提供了很多开发的小工具,可以在SetAPP中使用</li><li>Dash:API管理工具,提供了丰富的API文档,可以在SetAPP使用</li></ul><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#效率工具" id="user-content-效率工具"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">效率工具</h3><ul dir="auto"><li><a href="https://www.alfredapp.com/" rel="nofollow">Alfred</a>:启动器,还有Raycast也比较不错</li><li><strong><a href="https://pasteapp.me/" rel="nofollow">Paste</a></strong>,粘贴板管理,可以在SetAPP中使用</li><li>Rectangle:调整窗口,开源免费,提供Pro版本</li><li>Input Source Pro:输入法自动切换工具,目前在Beta阶段,好用推荐</li><li>Shottr:截图工具,Mac端还有iShot和CleanShotX都比较不错</li><li>uPic:图床上传工具,对应的还有picGo也不错,但是uPic是原生开发,体积比较小</li><li>MimeStream:Gmail客户端,比较好用</li><li><strong><a href="https://github.com/keycastr/keycastr">KeyCastr</a></strong>:按键显示</li><li><strong><a href="https://github.com/ripperhe/Bob">Bob</a></strong>,Mac 端翻译软件,支持划词翻译、截图翻译等</li><li>Things3:任务管理软件,以Project为中心,简洁</li><li><a href="https://hookproductivity.com/" rel="nofollow">Hook Mark</a>:提供Deeplink,可以Link到本地的任何文件</li><li><a href="https://www.devontechnologies.com/apps/devonthink" rel="nofollow">DEVONthink</a>:Collect, organize, edit and annotate documents of any kind,你的本地文件管理器</li><li><a href="https://github.com/exelban/stats">stats</a>:系统监控工具,替代iStat Meuns的工具</li><li><a href="https://github.com/dwarvesf/hidden">Hidden Bar</a>:管理菜单栏的工具</li></ul><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#其他" id="user-content-其他"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">其他</h3><ul dir="auto"><li><strong><a href="https://github.com/iina/iina">IINA</a></strong>,视频播放</li><li><strong><a href="https://itunes.apple.com/nz/app/runcat/id1429033973?mt=12&ref=appinn" rel="nofollow">RunCat</a></strong> - 菜单栏显示奔跑的小猫,CPU 占用率越高跑地越快</li><li><strong><a href="https://1password.com/" rel="nofollow">1Password</a></strong>,密码管理</li><li><strong><a href="http://software.charliemonroe.net/downie.php" rel="nofollow">Downie</a></strong>,通用视频下载</li><li>In Your Face</li></ul><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#输入输出" id="user-content-输入输出"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">输入输出</h3><ul dir="auto"><li><strong><a href="http://reederapp.com/mac/" rel="nofollow">Reeder</a></strong>,RSS 阅读软件,我的主要信息来源,没提供 rss 源的我会先在 <strong><a href="https://docs.rsshub.app/" rel="nofollow">rsshub.app</a></strong> 上找</li><li>Flomo笔记</li><li>MindNode:思维导图,丝滑流畅,但是样式感觉没Xmind好看(主观)</li><li>Workflowy:虽然功能比不上现在的很多笔记软件,但是他又不可或缺</li><li>heptabase:笔记软件,以白板为中心,目前主要在用的(付费)</li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#chrome插件" id="user-content-chrome插件"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">Chrome插件</h2><ul dir="auto"><li>油猴:不用多说了</li><li>ODH:推荐,用于记录单词,和Anki打通</li><li>RSSHub:万物皆可RSS</li><li>GoFullPage:将网页通过截图形式保存</li><li>Extension Manager:管理Chrome插件</li><li>SingleFile:原始保存网页</li><li>Modern for Wikipedia:现代化Wiki布局</li><li>Relingo:网页单词翻译&学习软件</li><li>immersive-translate:网页翻译</li><li>Stylus:可以定制化改变网页样式</li><li>Gitako:Github仓库目录增强</li><li>Minimal Theme:主题增强</li><li>Vimium C:提供Vim操作</li><li>daily.dev:发现优秀的Dev Blog</li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#硬件" id="user-content-硬件"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">硬件</h2><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#电脑相关" id="user-content-电脑相关"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">电脑相关</h3><ul dir="auto"><li>MacBook Pro 16寸19款:公司用的电脑</li><li>Mac Mini M1 :性价比之选,2021年二手买的,24小时开机,作为日常工作电脑,也承担了家里网络代理</li><li>显示器: <ul dir="auto"><li>Studio Display:在家使用,之前使用的是Dell 42寸的5k显示器,后来卖出买了Studio Display</li><li>Dell 2027QM:在公司使用,比较不错的4k显示器</li></ul></li><li>键盘 <ul dir="auto"><li>Niz Atom 68键两把,最近考虑出一把再购入HHKB Hybrid Type-S</li></ul></li></ul><h3 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#其他-1" id="user-content-其他-1"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h3><h3 dir="auto">其他</h3><ul dir="auto"><li>手机:iPhone 12,2020年购买,整体还不错,目前计划再用1-2年</li><li>耳机: <ul dir="auto"><li>AirPods Pro一代</li><li>AirPods Pro Max:用的不是很多,目前体验良好,就是有点沉</li></ul></li><li>Apple Tv 6:其实还蛮推荐的</li><li>极米Z6x Pro:配合Apple Tv挺不错的</li><li>iPad <ul dir="auto"><li>iPad Pro 2021 11 inch:中规中矩</li><li>iPad mini6:目前iPad中感觉最好的,我是从iPad Pro12.9用了一年多,然后卖了换了11寸的,目前用的mini6的尺寸是最好的,还是要针对自己的真是需求去买,当时就觉得买了iPad Pro很不错,可以学习,但是买前生产力,买后爱奇艺,iPad Mini6算是可以随时来用(玩)的工具了</li></ul></li><li>switch日版续航版:很久没玩了</li><li>Xbox series x:很久没玩了</li><li>威联通4盘位Nas:还可以,日常折腾下</li><li>Boox Pocket:日常吃灰中</li></ul><h2 dir="auto"><a aria-hidden="true" class="anchor" href="https://github.com/Sailfishc/awesome-tools#引用" id="user-content-引用"><svg aria-hidden="true" class="octicon octicon-link" height="16" viewbox="0 0 16 16" width="16"></svg></a></h2><h2 dir="auto">引用</h2><ul dir="auto"><li>部分引自云谦的博客,整理这篇的灵感也是来自于云谦的博客,之前有整理,但是比较零散,通过分享,发现更大的世界</li></ul> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-19465585249088924602023-01-08T17:45:00.006+08:002023-01-19T23:15:45.973+08:00去中心化社交网络协议Nostr验证教程<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p>来自 <a href="https://bress.xyz/zh/post/OaSwD3alo6TXkhd-bHdPWEDZl4oPNVuiKV7MukTr4kg">https://bress.xyz/zh/post/OaSwD3alo6TXkhd-bHdPWEDZl4oPNVuiKV7MukTr4kg</a> <br /></p><p>没有中央服务器或公司可以控制发布的内容以及其他人可以看到的内容 Nostr是抗审查和开源的 并且受到了推特创始人<a href="https://twitter.com/jack" rel="noopener noreferrer" target="_blank">Jack Dorsey</a>在推特上公开捐赠 14个btc 差不多25万美元~</p><p><a href="https://twitter.com/jack/status/1603535971114487816?s=20&t=jiW59GzDdpwXrSLTf0-Cjw" rel="noopener noreferrer" target="_blank">https://twitter.com/jack/status/1603535971114487816?s=20&t=jiW59GzDdpwXrSLTf0-Cjw</a></p><p>目前在官网我们可以看到只有四千多个用户在推特上进行了公钥验证 而在Nostr进行密钥验证成功的只有一千五百多个</p><p><a href="https://images.mirror-media.xyz/publication-images/ulmnT7Yri37NMP-q4GSom.png?height=1224&width=1727" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/ulmnT7Yri37NMP-q4GSom.png?height=1224&width=1727" /></a></p><p>那我们直接来看如何进行两次验证</p><p><strong>第一步:推特公钥验证</strong></p><p>1.首先我们要去 <a href="https://nostr.rocks/" rel="noopener noreferrer" target="_blank">nostr.rocks</a> 这个网址生成自己的公钥和私钥</p><p><a href="https://images.mirror-media.xyz/publication-images/QjlJ1Dn4XzEyoGOK0IV0U.png?height=971&width=1787" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/QjlJ1Dn4XzEyoGOK0IV0U.png?height=971&width=1787" /></a></p><p>直接点 然后继续</p><p><a href="https://images.mirror-media.xyz/publication-images/aSN0lzSGrz-9U-oNG9KRR.png?height=494&width=703" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/aSN0lzSGrz-9U-oNG9KRR.png?height=494&width=703" /></a></p><p>生成好了注意保存下公钥私钥 后面需要复制来用</p><p>2.发推验证</p><p>来到官网 <a href="https://nostr.directory/" rel="noopener noreferrer" target="_blank">https://nostr.directory/</a> 验证公钥</p><p><a href="https://images.mirror-media.xyz/publication-images/bfKO62jJvfduYNuNENL18.png?height=633&width=1359" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/bfKO62jJvfduYNuNENL18.png?height=633&width=1359" /></a></p><p>点击tweet your nostr pubkey 会自动跳转推特发推文 在下图标记处粘贴前面第一步生成的Public Key发送推文即可</p><p><a href="https://images.mirror-media.xyz/publication-images/u_pSGk-84v7MES7CMf67D.png?height=523&width=866" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/u_pSGk-84v7MES7CMf67D.png?height=523&width=866" /></a></p><p><a href="https://images.mirror-media.xyz/publication-images/BOX8xdV3J4zYL9j6cQY_d.png?height=329&width=745" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/BOX8xdV3J4zYL9j6cQY_d.png?height=329&width=745" /></a></p><p>推文验证后我们可以刷新下官网在下面可以看到自己的条目已经出来 前面红叉后面蓝鸟(红叉代表还没有进行Nostr验证)</p><p>到这里第一步 公钥验证就结束了</p><p><a href="https://images.mirror-media.xyz/publication-images/CFMS5FuL47Y-hnLn9sV8j.png?height=1018&width=1280" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/CFMS5FuL47Y-hnLn9sV8j.png?height=1018&width=1280" /></a></p><p><strong>第二步:Nostr公钥验证</strong></p><p>1.首先要去 <a href="https://astral.ninja/" rel="noopener noreferrer" target="_blank">astral.ninja</a> 导入私钥 前面第一步生成的Private Key 直接粘贴在下图红框内</p><p><a href="https://images.mirror-media.xyz/publication-images/9W57FTJRUbGaONQMeDgEm.png?height=1037&width=1985" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/9W57FTJRUbGaONQMeDgEm.png?height=1037&width=1985" /></a></p><p>导入成功后你也按照下图设置一下自己的名字头像 头像的url 就去推特点自己的头像 右键单击在新选项中打开 复制url填进去就行 然后这个窗口不要关</p><p><a href="https://images.mirror-media.xyz/publication-images/3Fj_4URYlkHtH3bYWkmJ-.png?height=1075&width=1111" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/3Fj_4URYlkHtH3bYWkmJ-.png?height=1075&width=1111" /></a></p><p>2.然后我们还要回到官网 <a href="https://nostr.directory/" rel="noopener noreferrer" target="_blank">nostr.directory</a> 按图点击</p><p><a href="https://images.mirror-media.xyz/publication-images/HxrELKiP40Pnj67MojyiZ.png?height=621&width=1471" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/HxrELKiP40Pnj67MojyiZ.png?height=621&width=1471" /></a></p><p>先输入推特id 注意不用带@符号 然后直接点下面的copy</p><p><a href="https://images.mirror-media.xyz/publication-images/CtZVU6xnX53qi9h7W4KX3.png?height=807&width=1173" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/CtZVU6xnX53qi9h7W4KX3.png?height=807&width=1173" /></a></p><p>3.接下来在回到刚才导入私钥的网址 点击左边 POST 按钮</p><p><a href="https://images.mirror-media.xyz/publication-images/8KbZfyraFiLgbmL8WfFAj.png?height=1154&width=1181" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/8KbZfyraFiLgbmL8WfFAj.png?height=1154&width=1181" /></a></p><p>在最下面的输入框里粘贴刚才copy的内容 如下图 点击小飞机发送即可</p><p><a href="https://images.mirror-media.xyz/publication-images/3KFaHtuhrROc4o6b41sBT.png?height=1210&width=1280" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/3KFaHtuhrROc4o6b41sBT.png?height=1210&width=1280" /></a></p><p>发送完是这样的界面 到这里Nostr验证就结束了</p><p><a href="https://images.mirror-media.xyz/publication-images/r4-w-JN2P0pU_TqWayopA.png?height=473&width=1105" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/r4-w-JN2P0pU_TqWayopA.png?height=473&width=1105" /></a></p><p>最后我们在返回到官网刷新页面 如下图 后面之前的红叉就变成了绿勾 就完成了Nostr的公钥验证</p><p><a href="https://images.mirror-media.xyz/publication-images/eqeF6m426ZXPEdxT2GiT3.png?height=880&width=1280" rel="onreferrer noopener" target="_blank"><img alt="" src="https://images.mirror-media.xyz/publication-images/eqeF6m426ZXPEdxT2GiT3.png?height=880&width=1280" /></a></p><p>over~</p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-125819121512831982023-01-08T17:44:00.002+08:002023-01-15T18:55:54.671+08:00去中心化社交协议Nostr<p>来自: <a href="https://mirror.xyz/raphaellin.eth/n3UfCBnC-46bU-c4rHjceV7cI35KOP9_YIqSdeBNXy0">https://mirror.xyz/raphaellin.eth/n3UfCBnC-46bU-c4rHjceV7cI35KOP9_YIqSdeBNXy0</a> <br /></p><p> </p><div class="_1sjywpl0 _1sjywpl1 bc5nciku bc5ncit6 bc5ncitv"></div><div class="css-1di4gg1"><div><p>大家好,我是Raphael,拉飞飞飞飞,一个区块链行业爱好者,从业者。</p><p>如果你想了解更多区块链的信息,工具,分析方法,请关注我的<a href="https://twitter.com/raphaellin" rel="noreferrer" target="_blank">Twitter</a>,一起共同成长。</p><p>接着上一篇去中心化社交的话题,今天介绍一个非常简洁的协议Nostr,一个要创造抗审查的全球“社交”网络,一个被Twitter前任CEO Jack资助,被现任CEO 马斯克封杀,想要替代Twitter的开放协议。</p><blockquote><p><em>未来去中心化的世界应该是抗审查的,用户的一切可以透明,但是不应该被阻止。钱是用户的,内容是用户的,选择看什么或者不看什么是人们的自由,这是每个人的权利。</em></p></blockquote><h2>Nostr的运作方式</h2><p>他很简单,简单到就2个成员:客户端(Client)和中继器(Relay)</p><p>每个用户需要生成一对公私钥匙,公钥代表你的身份,私钥代表你的权利,是不是有Web3那味了。^_^</p><p>用户的帖子都是有签名的,消息按照用户的要求发到指定的中继器.</p><p>用户的粉丝通过客户端从对应的中继器按对方的公钥拉取消息,并验证签名,从而读取该用户的帖子。</p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27899%27%20height=%27705%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FA8boT1VxB57gA2zl7-zTg.png&w=1920&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div></div></div><h2>Nostr 解决了什么问题?</h2><ul><li><p>用户可以发布到任意数量的中继器,从而确保了抗审查性。</p></li><li><p>用户不会因为被社交平台封禁或者社交平台服务器挂掉而丢失自己的帖子,粉丝,以及发布新信息的渠道。</p><ul><li>比如下图中Raphael可以发布到Relay C,UserA 还是能够获取到Raphael的信息。</li></ul></li></ul><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27861%27%20height=%27724%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FFAmG_lFvM4_z-op8mrEul.png&w=1920&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><ul><li>如果用户发了大量垃圾信息到中继器,可以增加一些反垃圾邮件技术功能,当然客户端也可以很容易取消这些有垃圾信息的中继器。</li></ul><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27893%27%20height=%27689%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FFmrJZi22f5EJJ0JJP12f7.png&w=1920&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><ul><li><p>每个中继器不必保存所有数据,只需要负责一小群用户,从而对服务器的要求不大。</p></li><li><p>开发者更加关注客户端的用户体验和不同社交互动的探索。</p><ul><li>可以是Twitter也可以是Telegram。</li></ul></li></ul><h2>Nostr的前景</h2><p>未来去中心化的世界应该是抗审查的,用户的一切可以透明,但是不应该被阻止。钱是用户的,内容是用户的,选择看什么或者不看什么是人们的自由,这是每个人的权利。</p><p>Nostr是个挺不错的方案,因为他足够简单,非常清晰。</p><ul><li><p>对于开发者来说,客户端和中继器职责明确,都极具拓展性和想象空间。</p></li><li><p>对于用户来说,也很容易选择留下或者离开。</p></li></ul><p>Nostr虽然说不会发币,但是要如下问题,必然需要一套经济激励制度。</p><ul><li><p>解决人们运行中继器的动机问题,</p></li><li><p>解决如何处理大数据量内容(视频等)的问题,</p></li><li><p>解决给特殊账号提供服务等问题</p></li></ul><p>激励可以来自于客户端的项目方,可以来自于用户本身,但是肯定要有。所以未来还是要看围绕着Nostr的生态如何发展。</p><h2>如何在Nostr上映射Twitter账号</h2><p>最后教大家如何关联twitter账户到Nostr上,这样你自然就能在Nostr上看到你关注的twiiter账号(如果他们做了映射并发了帖),或者让你的粉丝在Nostr上找到你。</p><p>先登陆 <a href="https://nostr.directory/" rel="noreferrer" target="_blank">https://nostr.directory/</a> ,然后点击“<strong>Tweet your nostr pubkey” 发一条tweet。</strong></p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%271088%27%20height=%27513%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FSGh_coD1tCCWRXHrXyuar.png&w=3840&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><p>然后在 <a href="https://nostr.rocks/" rel="noreferrer" target="_blank">https://nostr.rocks</a> 上生成一对公私钥。</p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%271184%27%20height=%27668%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2Fj9WXQmxH4TTKsUj4njnhh.png&w=3840&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><p>按步骤生成完后,在下方点击“VIEW YOUR KEYS”查看</p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27804%27%20height=%27699%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FxbtUSAaOmJJS1VRSby6Q2.png&w=1920&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><p>登陆 <a href="https://astral.ninja" rel="noreferrer" target="_blank">https://astral.ninja</a> 输入你的私钥</p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27609%27%20height=%27616%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FNEgGLiP43DexwOsx1s2tI.png&w=1920&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><p>在Profile里填上你的Twitter名字和头像链接,之后回到 <a href="https://nostr.directory/" rel="noreferrer" target="_blank">https://nostr.directory/</a> ,点击“Verify your pubkey on nostr”.</p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%271037%27%20height=%27521%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FByEKL3F-r6cX91NKFnlfW.png&w=3840&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27872%27%20height=%27656%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FzB2DuWCr9heazgQ6Q9GU-.png&w=1920&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure><p>再到 <a href="https://nostr.directory/" rel="noreferrer" target="_blank">https://nostr.directory/</a> 把复制的内容发一条POST。</p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27876%27%20height=%27369%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2F-GScinV9zpgr4UOq7BRjg.png&w=1920&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><p>最后你的Twitter账号在 <a href="https://nostr.directory/" rel="noreferrer" target="_blank">https://nostr.directory/</a> 上的关联状态就是 一个绿勾勾。</p><div><figure class="rehype-figure"><div data-rmiz-wrap="visible"><span style="background: none; border: 0; box-sizing: border-box; display: inline-block; height: initial; margin: 0; max-width: 100%; opacity: 1; overflow: hidden; padding: 0; position: relative; width: initial;"><span style="background: none; border: 0; box-sizing: border-box; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%271138%27%20height=%27342%27/%3e" style="background: none; border: 0; display: block; height: initial; margin: 0; max-width: 100%; opacity: 1; padding: 0; width: initial;" /></span><img alt="" data-nimg="intrinsic" src="https://mirror.xyz/_next/image?url=https%3A%2F%2Fimages.mirror-media.xyz%2Fpublication-images%2FRkWVmhbqT0XtJrDNTCqZu.png&w=3840&q=90" style="border: none; bottom: 0; box-sizing: border-box; display: block; height: 0; left: 0; margin: auto; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; padding: 0; position: absolute; right: 0; top: 0; width: 0;" /></span></div></figure></div><h2>如何自己跑一个Nostr中继器</h2><p>看下面的文章就够啦~~</p><div class="css-180lw20"><figure><div class="css-18x9foa"><a class="css-11a0l8s" href="https://andreneves.xyz/p/set-up-a-nostr-relay-server-in-under" rel="noreferrer" target="_blank"><div class="css-h3h8oa"><div class="css-qccqch"><img alt="Set up a Nostr Relay server in under 5 minutes" class="css-idr58y" src="https://substackcdn.com/image/fetch/w_1200,h_600,c_limit,f_jpg,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F77e1e2ec-9fa3-4313-86e5-06464b098633_1280x1048.jpeg" /><div class="css-6v0d6f"></div></div><div class="css-1ka1itu"><div class="css-13xbs5j">Set up a Nostr Relay server in under 5 minutes</div><div class="css-1lanuoe">Nostr is a new decentralized social network protocol. This guide is the easiest way to get started running your own Nostr Relay and participating in the network. From 0 to 100 in under 5 minutes.</div><div class="css-djymjx"><svg class="css-1y0aw0e" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></a></div></figure></div><div class="css-180lw20"><figure><div class="css-18x9foa"><a class="css-11a0l8s" href="https://andreneves.xyz/p/set-up-a-nostr-relay-server-in-under" rel="noreferrer" target="_blank"><div class="css-h3h8oa"><div class="css-1ka1itu"><div class="css-djymjx"><div class="css-1sjhlb0">andreneves.xyz</div></div></div></div></a></div></figure></div><p>最后如果大家喜欢我的分享,欢迎点击下方按钮订阅,也请关注我的<a href="https://twitter.com/raphaellin" rel="noreferrer" target="_blank">个人Twitter</a>。我会持续为大家带来更多好玩的项目体验分享。 ^o^</p><p> </p><div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-33697026998441515242022-12-17T18:16:00.005+08:002023-01-08T17:43:08.180+08:00用ChatGPT来做搜索关键词聚类分析,方法和实例<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p>来自: <a href="https://codechina.org/2022/12/seo-chatgpt-search/">https://codechina.org/2022/12/seo-chatgpt-search/</a></p><p>截止到目前为止,我的Blog有194篇文章已经发布了,然而,如果你用Google分析去看2022年的内容分析。你会发现,马太效应很明显,真正带来主要流量的是少数的文章,前10名就可以看到阅读量的锐减。马太效应,28原则是我们在很多数据分析中都会常常看到的现象。</p><figure class="wp-block-image size-full"><img alt="" class="wp-image-26352" height="954" src="https://codechina.org/wp-content/uploads/2022/12/截屏2022-12-17-15.33.18.png" width="722" /></figure><p>我的论坛Ourcoders有8000多个帖子,回帖则有近8万多条,从阅读分析的角度,结果也差不多。</p><figure class="wp-block-image size-full"><img alt="" class="wp-image-26353" height="822" src="https://codechina.org/wp-content/uploads/2022/12/截屏2022-12-17-15.34.22.png" width="722" /></figure><p>从SEO的角度来看其实也如此,我们用Google search console可以了解到人们是搜索什么词来到我们的网站的。这些搜索词其实并不跟我的内容一一对应,有些内容收到了Google的青睐,有些则没有。</p><p>从Google的搜索词就可以看到从Google和搜索者的视角,我们哪些内容更加优秀。我们继续创作相关的内容,强化Google对我们哪些内容更有权威的理解,我们就可以更好的得到更多的来自Google的访问了。</p><p>但是查看搜索记录的时候,有一个实际的问题。比如下面是我Blog最近一年的一些Google热门搜索词:</p><pre class="wp-block-code"><code>tinyfool<br />堆排序<br />秦晖 乌克兰<br />英语轻松读<br />郝培强<br />如何<a data-internallinksmanager029f6b8e52c="1" href="https://codechina.org/category/makemoney/" title="如何赚钱">发财</a><br />wapi<br />英语写作练习<br />wapi wifi<br />三教同源<br />英文写作练习<br />wapi标准<br />台湾基尼系数<br />leetcode 堆排序<br />堆排序 leetcode<br />台湾贫富差距<br />怎么发财<br />wifi wapi<br />秦晖乌克兰</code></pre><p>你会发现里面会出现很多重复的,略有不同的写法的搜索词,或者是一个意思用了不同的写法的搜索词。这些数据整合在一起,你才能对整体上,Google的搜索者会如何找到你的内容得到一个比较详尽的理解。</p><p>这个时候,我们又可以用到<a href="https://codechina.org/tag/chatgpt/">CharGPT</a>了,它是一个基于语言模型的人工智能对话AI,对文字进行处理其实是它的强项。所以,我可以把我Blog的一年内的最热前149名交给它,让它进行聚类分析:</p><p>提示:</p><pre class="wp-block-code"><code>对下面的搜索关键词进行聚类分析:<br /><br />tinyfool<br />堆排序<br />秦晖 乌克兰<br />英语轻松读<br />郝培强<br />如何发财<br />wapi<br />英语写作练习<br />wapi wifi<br />三教同源<br />英文写作练习<br />wapi标准<br />台湾基尼系数<br />leetcode 堆排序<br />堆排序 leetcode<br />台湾贫富差距<br />怎么发财<br />wifi wapi<br />秦晖乌克兰<br />李永乐 吸氧<br />leetcode 992<br />秦晖<br />leetcode刷题列表<br />1913 年英国首相下野<br />沈志华<br />滑动窗口<br />992. subarrays with k different integers<br />subarrays with k different integers<br />台湾 基尼系数<br />高春辉<br />iphone 激光雷达<br />leetcode 424<br />leetcode 滑动窗口<br />周衙内<br />秦晖 乌克兰恩仇记<br />chatgpt 写作<br />台北人均gdp<br />flake8 e501<br />香港基尼系数排名<br />leetcode 堆<br />chatgpt 保存<br />chatgpt问题<br />chatgpt 润色<br />如何学英语<br />滑动窗口 leetcode<br />290. word pattern<br />中国经济奇迹<br />怎么学英语<br />英语怎么学<br />codechina<br />如何学习英语<br />学英语<br />苹果激光雷达<br />leetcode 240<br />leetcode 30<br />如何使用chatgpt<br />mac更新后变慢<br />flake e501<br />chatgpt<br />秦晖2022<br />tinypool<br />秦晖 俄罗斯<br />chatgpt 问题<br />tinyfool 是谁<br />瑞典首相女儿<br />chatgpt 使用<br />秦晖讲座乌克兰<br />练习英文写作的app<br />苹果 激光雷达<br />李永乐 制氧机<br />英国首相下野 1913<br />乌克兰恩仇记<br />有感染力的人<br />56. merge intervals java<br />chatgpt 文章<br />1913 年日本首相<br />1913年 英国首相下野<br />github jira integration<br />怎么学习英语<br />tinyfool twitter<br />如何学好英语<br />怎样学习英语<br />美国芯片禁令<br />最大堆<br />leetcode 169<br />the power of habit 中文<br />堆<br />leetcode 290<br />github 企业版<br />学习英语的方法<br />leetcode 299<br />leetcode 219<br />leetcode 49<br />java 滑动窗口<br />the power of habit中文<br />e501 line too long<br />leetcode 349<br />秦晖 香港中文大学<br />中国禁止wifi<br />堆算法<br />leetcode 703<br />习惯的力量<br />英语写作<br />divide and conquer leetcode<br />如何评价温铁军<br />permutation in string leetcode<br />学英语的书<br />ffmpeg 旋转视频<br />chatgpt使用<br />秦晖 香港<br />中國哲學史筆記<br />leetcode design twitter<br />如何發財<br />瑞典首相女兒<br />chatgpt intellij<br />subarray with k different integers<br />台北人均 gdp<br />group anagrams java<br />滑动窗口 java<br />乌克兰 秦晖<br />秦暉 烏克蘭<br />学好英语的方法<br />leetcode merge sort<br />瑞典首相收养<br />秦晖最新文章<br />tinyfool 离婚<br />pycharm chatgpt<br />chatgpt 语言<br />jira gitlab 集成<br />轻松签证书<br />温铁军评价<br />1913 英国首相下野<br />台湾 基尼 系数 排名<br />github 替代<br />imac 更新<br />全球基尼系数排名<br />1913 年日本前首相刺杀<br />1913年日本首相<br />美剧人生从豪斯医生开始<br />luoyonghao<br />滑动窗口 英文<br />日本移动支付<br />利炳根<br />wifi协议<br />中國各省人均gdp台灣<br />上海人均gdp台湾<br />blender教程<br />王朔小说</code></pre><p>结果:</p><pre class="wp-block-code"><code>It seems that the search keywords provided can be grouped into several categories:<br /><br />-Names of individuals: tinyfool, 秦晖, 郝培强, 沈志华, 高春辉, 周衙内, tinypool, 李永乐, 瑞典首相女儿<br /><br />-English language learning and practice: 英语轻松读, 英语写作练习, 英文写作练习, 如何学英语, 怎么学英语, 英语怎么学, 如何学习英语, 学英语, 怎么学习英语, 怎样学习英语, 学习英语的方法<br /><br />-Technical terms: 堆排序, leetcode 堆排序, 堆排序 leetcode, 最大堆, 滑动窗口, leetcode 滑动窗口, java 滑动窗口, leetcode 992, 992. subarrays with k different integers, subarrays with k different integers, leetcode 424, leetcode 240, leetcode 30, leetcode 290, word pattern, leetcode 299, leetcode 219, leetcode 49, flake8 e501, flake e501, github jira integration, github 企业版<br /><br />-Countries, regions, and cities: 乌克兰, 台湾, 台湾基尼系数, 台湾贫富差距, 中国经济奇迹, 香港基尼系数排名, 英国, 英国首相下野 1913, 日本, 美国, 美国芯片禁令<br /><br />-Miscellaneous topics: 俄罗斯, 乌克兰恩仇记, 如何发财, 怎么发财, 吸氧, 制氧机, 激光雷达, iphone 激光雷达, 苹果 激光雷达, 苹果激光雷达, mac更新后变慢, 有感染力的人, 56. merge intervals java, the power of habit 中文, codechina, 三教同源, wapi, wapi wifi, wifi wapi, wapi标准, wapi 是谁, wapi</code></pre><p>注意,聚类分析不是每次都会产生完全一致的结果,这是这类算法的特点,但是基本上可以给我们一个大概的感觉,我们在Google上比较受欢迎的内容上哪些类型的。以后可以加强这些类型内容的创作。</p><p>我也把OurCoders的年度热门关键词200多个交给了ChatGPT,让它给我做分析。</p><p>提示</p><pre class="wp-block-code"><code>对下面的搜索关键词进行聚类分析:<br />gmail客服<br />新加坡程序员工资<br />ourcoders<br />新加坡程序员<br />日本it派遣<br />新加坡 程序员<br />新加坡it薪水<br />谷歌邮箱客服<br />gmail 客服<br />谷歌客服邮箱<br />新加坡it工资<br />apple id哪个区好<br />新加坡软件工程师薪水<br />google客服郵箱<br />沈沉舟<br />新加坡程序员招聘<br />google客服邮箱<br />java转c++<br />mac快捷键冲突检测<br />国内找加拿大工作<br />is not an object file (not allowed in a library)<br />零基础转码一亩三分地<br />线程切换开销<br />新西兰 程序员<br />田春冰河<br />新加坡 it<br />cs61b 一亩三分地<br />数字代替字母<br />日本 it 派遣<br />对日外包<br />新加坡程序员薪水<br />subdatawithrange<br />c++ 一亩三分地<br />新加坡码农工资<br />topcoder赚钱<br />nsdocumentrevisionsdebugmode<br />赴日it<br />it派遣<br />零基础转码 一亩三分地<br />linhaozero<br />新加坡it 薪水<br />移民电报群<br />inquilinex<br />润出去<br />沟通的目的<br />新加坡it工作<br />类似草榴社区的网站<br />张铁蕾<br />加拿大程序员找工作<br />cs61b一亩三分地<br />xcode下载太慢<br />新加坡it公司<br />郝培强<br />新加坡it<br />udemy 一亩三分地<br />类似草榴社区<br />类似草榴的网站<br />新西兰程序员工资<br />新加坡it招聘<br />proxifier 原理<br />gmail人工客服<br />數字代替英文<br />日本程序员<br />cannot combine with previous 'type-name' declaration specifier<br />java项目一亩三分地<br />gmail客服信箱<br />typeerror: 'property' object has no attribute '__getitem__'<br />王垠 博客<br />shopee新加坡招聘<br />日本 java<br />superapi株式会社<br />新加坡程序员薪资<br />tinyfool<br />王垠博客<br />google账号人工客服<br />日本java<br />蔡学镛<br />python 一亩三分地<br />zhh-4096<br />online cs master一亩三分地<br />张银奎<br />加拿大程序员<br />libcore.io.disklrucache<br />mac 查看快捷键占用<br />加拿大 程序员<br />新西兰 it 工资<br />scvpn mac<br />草榴社区类似<br />程序员移民<br />瑞士租房<br />nsallocatememorypages failed<br />谷歌 新加坡 薪水<br />macos应用开发基础教程<br />微信小程序模板<br />西雅图黄都督<br />王垠<br />肉翻<br />eurekavpt<br />xcxcdx<br />apple id 哪个 区 好<br />谷歌客服在线<br />it 派遣<br />谷歌在线客服<br />warmj<br />no such module 'packagedescription'<br />xcode 安装慢<br />慧咨环球<br />xcode下载慢<br />面试作弊一亩三分地<br />程序员出国<br />澳洲程序员<br />手写红黑树<br />谷歌人工客服<br />一亩三分地 转码项目<br />日本it<br />google gmail 客服<br />前端兼职<br />mac外接显示器合盖休眠<br />python刷题一亩三分地<br />两台mac 扩展屏幕<br />cannot combine with previous 'int' declaration specifier<br />开发转产品<br />proxifier原理<br />华为 计算产品线<br />微信小程序源码<br />加拿大招聘<br />宝玉xp<br />魔法师蛋<br />羡辙<br />免费梯子<br />日本 程序员<br />转码项目 一亩三分地<br />nssplitviewcontroller<br />如何润出去<br />思谋科技<br />果喵酱<br />${@print(md5(31337))}<br />美国程序员兼职<br />udemy一亩三分地<br />mediacorp招聘<br />谷歌在线人工客服<br />archfeed<br />instagram自动关注<br />sql1015n the database is in an inconsistent state. sqlstate=55025<br />个人开发者<br />draveness是谁<br />wordpress程序员主题<br />icloud 域名邮箱<br />tombkeeper<br />google客服email<br />telegram v2ex<br />日本 前端<br />转码 一亩三分地<br />xcode安装慢<br />157.7.135.42<br />mac合上盖子不休眠<br />小程序模板<br />mac快捷键冲突<br />程序员转行<br />靠谱的梯子<br />kxmovie<br />source insight 替代<br />ig自动关注别人<br />1024caoliu<br />长期使用美区apple id<br />溝通的目的<br />新加坡程序员收入<br />ios科学上网<br />';print(md5(31337));$a='<br />shopee招聘新加坡<br />日本 it 移民<br />online cs master 一亩三分地<br />seamoney<br />日本 it<br />加拿大找工作<br />tinyfool 离婚<br />shadowsocks.com 怎么样<br />source insight替代<br />jerry ai工作<br />日本歸化心得<br />梁斌penny<br />superapi<br />移民澳洲的利弊<br />mac鼠标左键失灵<br />codejob<br />seamoney singapore<br />新加坡 it 收入<br />java 東京<br />xcode 下载慢<br />ios 动态库<br />teaser: fast and certifiable point cloud registration<br />亚马逊程序员工资<br />nstask<br />ipv6 墙<br />gmail克服<br />新西兰程序员<br />一亩三分地 udemy<br />gmail 克服<br />自学转码<br />亚马逊 l7 级别<br />微博封号<br />客服邮箱<br />mv2pl<br />全栈项目一亩三分地<br />mock interview一亩三分地<br />ins自动关注<br />阿里云gts<br />程序员创业<br />icloud邮箱好用吗<br />前端远程工作<br />少林修女<br />简历 markdown<br />the web developer bootcamp一亩三分地<br />如何通宵<br />程序员起名<br />apple specialist工作<br />macbook apple care 必要<br />觉得活着没意思<br />秋叶原 风俗<br />新西兰工作群<br />找日本工作<br />瑞士租屋<br />澳洲游戏公司<br />外派加拿大<br />tactile pro<br /></code></pre><p>结果</p><pre class="wp-block-code"><code>从上述搜索关键词中可以看出,可以将其分为以下几类:<br /><br />-程序员工资:新加坡程序员工资、新加坡程序员薪水、新加坡软件工程师薪水、新加坡it薪水、新加坡it工资、新加坡码农工资、新加坡it工作、新加坡it招聘、新加坡it公司、新加坡it、新西兰程序员工资<br /><br />-程序员招聘:新加坡程序员招聘、日本it派遣、日本程序员、赴日it、it派遣、日本java、对日外包、superapi株式会社、shopee新加坡招聘<br /><br />-程序员资源:ourcoders、udemy 一亩三分地、java项目一亩三分地、cs61b 一亩三分地、c++ 一亩三分地、python 一亩三分地、tinyfool、linhaozero、inquilinex、润出去、零基础转码 一亩三分地、零基础转码一亩三分地、王垠 博客、王垠博客、蔡学镛、张铁蕾、沟通的目的、沈沉舟、田春冰河、郝培强<br /><br />-程序员问题:java转c++、cannot combine with previous 'type-name' declaration specifier、typeerror: 'property' object has no attribute 'getitem'、is not an object file (not allowed in a library)、mac快捷键冲突检测、xcode下载太慢、proxifier 原理、线程切换开销、数字代替字母、數字代替英文、subdatawithrange、nsdocumentrevisionsdebugmode<br /><br />-与新加坡有关的关键词,包括:新加坡程序员工资,ourcoders,新加坡程序员,新加坡 程序员,新加坡it薪水,新加坡it工资,apple id哪个区好,新加坡软件工程师薪水,新加坡程序员招聘,新加坡it工作,新加坡it 薪水,新加坡it公司,新加坡程序员薪资,shopee新加坡招聘<br /><br />-与日本有关的关键词,包括:日本it派遣,日本 it 派遣,赴日it,it派遣,日本程序员,日本 java,日本java<br /><br />-与移民有关的关键词,包括:国内找加拿大工作,加拿大程序员找工作,移民电报群<br /><br />-与转码有关的关键词,包括:java转c++,零基础转码 一亩三分地,零基础转码一亩三分地<br /><br />-与线程有关的关键词,包括:线程切换开销<br /><br />-与草榴社区有关的关键词,包括:类似草榴社区的网站,类似草榴的网站,类似草榴社区<br /><br />-与Xcode有关的关键词,包括:mac快捷键冲突检测,xcode下载太慢<br /><br />-与代码有关的关键词,包括:cannot combine with previous 'type-name' declaration specifier,typeerror: 'property' object has no attribute 'getitem',is not an object file (not allowed in a library),subdatawithrange,cs61b 一亩三分地,cs61b一亩三分地,c++ 一亩三分地,java项目一亩三分地,python 一亩三分地,python 一亩三分地</code></pre><p>当然这个工作,我们可以找开源的短文本聚类代码,我自己也会NLP,也可以自己写聚类代码,针对搜索词的特点可以做一些优化。但是我们通过这个例子可以看到ChatGPT的强大,不需要你懂任何编程,你只需要告诉它帮你处理文本的聚类,他就做好了,非常好用。</p><p>也更适合没有NLP知识积累的程序员和普通用户来使用。</p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-15003734411029222212022-12-16T21:07:00.005+08:002023-01-01T06:20:18.326+08:00VPN不完全避雷指南(国外向)<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><div class="p-name" itemprop="headline" style="text-align: left;">来自:<a href="https://song.al/vpn">https://song.al/vpn</a><br /></div> <h2>前言</h2><p>隐私权是一项基本人权。</p><p>你不应该被互联网浏览;你不应该因为信息本地化而无法看到外面世界的样子;你不应该成为不安全的公共WiFi黑客窃取个人信息的受害者;你不应该遭到政府偷窥;你不应该受运营商与在线内容提供商PY交易后不中立的流量分配任意摆布。</p><p>选择一款适合自己的VPN在这个数字时代是一项基本需求。把资讯自由还给自己,把网络中立还给自己。</p><p>本指南包含了市面上大多数有名的VPN服务,可能有少量遗漏与错误,欢迎在本文底部留言讨论。</p><h2>基本的评分策略</h2><ul><li>作者思维独立性强但评分比较主观,比如NordVPN就因为Windows客户端网页登录而给直接降档次。每项VPN的严重缺点、可改善之处与优点均与其售价、服务器规模和定位相关。</li><li>推荐指数满分10分。</li><li>超过3年期的订阅套餐再便宜也不在价格考虑范围。</li><li>来自别的评测者发现的问题会给出链接,对于流媒体解锁的现状请尽可能参考最新评测。</li><li>因时间有限,第三方背书只提最近的一次。</li><li>官网无第三方站点视频(主要是YouTube)、tracker、cookie,或者不通过各类评测网站打广告的VPN定位偏向隐私与数据安全;其余月付高价,年付低价的通用VPN必须考虑流媒体解锁能力、服务器数量与速度等。</li></ul><h2>VPN相关专业术语及争论</h2><h3>KillSwitch</h3><p>KillSwitch在工业上中文叫“紧急停止开关”,但在VPN业界的中文翻译并未统一。Surfshark翻译成“查杀开关”(很生硬的翻译腔),Private Internet Access翻译成“切断开关”,VPN Ranks网站一篇科普文章的中文翻译写作“阻止开关”。 它的本质是一种防火墙,只允许VPN隧道内通信,当VPN连线质量不佳意外中断时,能阻止对外流量进出,保障隐私。 VPN缺少了KillSwitch就相当于电热水器缺少了漏电保护,它的非0即1机制决定必须达到实时激活的水准才能保障安全。 KilSwitch分为基础,高级和永久几个层级。永久KillSwitch意味着只有VPN服务器和API的IP地址或域名在预设的白名单里,即使将VPN客户端关闭后也不会对外通信。高级KillSwitch是只要VPN客户端不彻底关闭或者完全登出账号,就算VPN处于未连接状态也不会对外通信。基础KillSwitch仅仅保护连接成功后与VPN服务器意外短线的情况,用户不幸手滑操作失误点了断开VPN时,以及切换服务器时从断开原本的连线到与新服务器握手的短暂间隔期将会暴露原始IP地址。 桌面端的KillSwitch可以融入进操作系统的防火墙,而iOS/Android的KillSwitch非常简陋,甚至有失效的报告。这也是为何不推荐追求极致数据安全、需要传输敏感数据的用户依赖移动端平台工作的原因。</p><h3>解锁流媒体 unblock streaming services</h3><p>在线流媒体服务分为Netflix, HBO Max, Disney+, Amazon Prime Video等订阅制服务与BBC iPlayer等购买许可证制服务。因为地域版权限制,流媒体业务的提供商在积极封杀VPN的IP地址,若某个IP地址短时间内有多名用户登录,就有可能被认定为公共代理或VPN的IP地址而封杀。但是流媒体服务解锁是很多VPN的卖点之一,因此这种捉迷藏游戏将会持续下去。IPV6全面流行后,VPN的IP被识别的概率可能会大幅度降低。</p><h3>总部司法管辖地 headquarter jurisdiction</h3><p>指实际负责运营VPN的公司(不是仅完成收购而放任独立运行的母公司)的注册地。是VPN界争议最大的问题之一。因斯诺登和维基解密爆料的种种内幕,结合英美联盟的历史,互联网逐渐有了“5眼国家要不得”、“9眼国家要不得”与“14眼国家要不得”的都市传说。</p><p>“5眼”指英语系五眼联盟。“9眼”指在五眼联盟基础上增加丹麦、法国、荷兰、挪威四国,“14眼”再增加德国、比利时、意大利、西班牙、瑞典五国即十四国组成的SIGINT Seniors Europe。这也是不少知名VPN总部都在“离岸地”、“避税天堂”的原因,包括但不限于瑞士(中立国,独立于欧盟)、罗马尼亚(罗马尼亚机房都懂的,抗DMCA神器)、塞舌尔(不只是个旅游胜地)、巴拿马(巴拿马文件,嘻嘻)、英属维尔京群岛(只有双重犯罪且根据BVI法律会判一年刑期起步的事情,法院才会理睬来自外国的调查、司法协助请求)、和十四眼中“相对特立独行”的瑞典(海盗湾……)。</p><p>但笔者认为不能被这些都市传说误导,十四眼本质是情报协作联盟,国际司法合作是不分十四眼内与十四眼外的,以“天高皇帝远”为目标去开办公司也得避开落后与缺乏人权与法制的化外之地,总不会有VPN公司把总部开到塔利班治下的阿富汗吧?笔者更倾向于相信Private Internet Access所解释的,“其他一些 VPN 公司声称,美国的 VPN‘妥协’了,因为与国家安全局或其他一些政府恶棍有秘密联系,这当然是无稽之谈。我们拥有严格的无日志政策,并且已(多次)在法庭上经受考验并得以证实——我们 100% 致力于维护和保障用户隐私。正是因为我们是一家美国公司,我们享有宪法保护,以防政府过度干预。我们为公司设在美国而自豪,这让我们能够获得所需的自由,为全世界的数字隐私和线上自由权利而奋斗。”</p><h3>VPN隐私实践 VPN privacy policy practice</h3><p>好的VPN应该确保服务器端不记录各种可直接或间接识别用户唯一身份的日志。它们包含VPN服务器IP地址,用户原始IP地址,用户浏览网站或服务的IP地址或主机名,会话时间戳,会话时长,DNS解析记录。好的VPN需要在自己的服务器组中内建DNS,而不是依赖第三方的DNS服务器。虽然各家VPN几乎都声称自己没有日志,但实际的具体运行情况可以千差万别。</p><h3>VPN泄漏 VPN leakage</h3><p>一种情况是VPN服务器或DNS服务器实际留下了日志。另一种情况是客户端自己出现了问题。由于系统青睐最近处DNS,本地运营商的DNS可能在VPN连接后仍然在解析。</p><p>WebRTC是一种开源的浏览器内置的网络实时通讯协议,可能会VPN连接后依然通过原始IP地址与目标地址之间传输数据。VPN可以设置拆分隧道,同理操作系统可能有若干连接处于VPN之外,造成IP泄漏。以上泄漏都可以通过技术手段得到解决。</p><h3>支付隐私 payment privacy</h3><p>毫无疑问,使用信用卡、借记卡或者PayPal、Apple Pay等在线钱包会留下每一笔交易的详细记录。</p><p>很多人不想购买VPN的交易被银行等金融机构知道。他们选择加密货币或加密代币,第三方充值卡或VPN官方在线下商店售卖的激活码,或者直接向VPN提供商的指定地址邮寄现金。</p><p>加密货币中公认隐私保障最好的是门罗币。但邮寄钞票的隐私远不如加密货币,因为寄信一般是要写实名的,目的地(VPN方提供的信箱)也是明牌,还会留下生物指纹;PaymentWall支持的Mint、NeoSurf等预付卡,各类游戏充值卡比如雷蛇金卡和各类商户比如星巴克的预付卡也可能后台留下具体的消费记录。</p><h3>协议 protocol</h3><p>随着时代的发展,PPTP协议已经完全不符合安全需求,加密强度弱,跟明文差别不大。 L2TP/IPSec,IKEV2/IPSec,SSTP虽然安全,但闭源的特性决定了他们不会成为第一梯队的选择。 OpenVPN是安全VPN协议的金标准,源代码完全公开并得到专家们的肯定。但此协议的流量特征过于明显。树大招风的道理大家都懂,大街上开F1赛车的行为一定会引来注意的。尽管绝大多数国家和地区都没有对VPN进行系统性的封锁,但有的运营商会对UDP通过QoS优先级方式限速。为了骗过运营商、政府的DPI即深度流量包检测,通过各类混淆法让OpenVPN看上去更像普罗大众的日常流量——TCP与TLS,低调内敛,方能畅行无阻。辨别OpenVPN流量是否混淆的一种办法是通过Wireshark观察流量,未混淆时数据包类型显示为OpenVPN,混淆后则显示为普通的TCP或UDP。</p><p>OpenVPN虽好,但复杂的几十万行源代码注定带来极限速度不快。小巧轻便的WireGuard应运而生。WireGuard同样开源,且原始码非常简单只有几千行,易于维护,留下的可攻击面远小于OpenVPN,默认走UDP高位端口,已经整合进Linux和Windows的系统内核中。但高速和高VPN隧道安全性的背后是对服务器端用户隐私性的一些忽略,VPN服务器端只允许部署静态IP地址,且会把对等节点的IP地址记录到至少下次重启,这将是对用户隐私的严重威胁。但好在不同的VPN供应商通过各种技术手段克服了WireGuard的弊病。只要VPN服务器设置得当,是不会有问题的。WireGuard也可以流量混淆或伪装。 SoftEther是日本筑波大学著名学术研究项目。它还有一个衍生品,由各地(主要是日韩)志愿者运行的免费VPN网络——VPNGate。SoftEther源代码是公开的,使用HTTPS作为传输隧道,流量特征与常规HTTPS连线无异。 有的VPN有自主研发协议,或者是OpenVPN和WireGuard的改进版,或者是完全的新协议。</p><h3>第三方背书与开源 3rd-party audit, open-source</h3><p>为了让潜在和现有客户打消疑虑,VPN商家普遍在积极地寻求独立地第三方公司或机构前来进行高权限甚至完全权限测试,反馈发现地问题,并通过测试报告为VPN商家做公证,背书作证的内容主要包括服务 器无日志、服务器设施安全性、客户端安全性。</p><p>作为VPN进阶功能,它们的实现均基于DNS规则库。由于规则库需要不断更新,因此不同家VPN的实际拦截效果差距较大,有拦截失败与错杀的情况。</p><h3>服务器部署与IP地址 VPN servers deployment and IP addresses</h3><p>同时为多个会话服务的VPN服务器需要强大的硬件配置。一台分成多台用的VPS无论是性能还是安全性都不是VPN应该的选择,因此主流VPN都选用独立服务器(dedicated server或bare-metal server),且最好位于Tier 4级别的数据中心(多重冗余设计,保障99.995% uptime)。 服务器是“租用”还是“拥有”的争论,一直是不同VPN厂家互相口诛笔伐的方面。直接从ISP出身的VPN会说别家是第三方互联网资源,托管方式(co-located)自助搭建服务器的VPN也瞧不上仅仅向上游数据中心或云计算厂商租用服务器的VPN。</p><p>但是笔者想说的是,上游厂商的服务器,IP地址不也是从ARIN,RIPE NCC,APNIC,LACNIC,AfriNIC几大区域注册管理机构处取得的吗?再往上想,就是ICANN管一切了。 大型VPN的可选择的一个“服务器节点”实际多数都是一个服务器集群,具备多个IP地址,IP动态分配,用户长时间连接时候有可能会自动重连中途更换IP。如果是同一个IP段还好,如果是不同的IP段,可能会被用户浏览的实际目的地服务器错误识别为变更地理位置而触发账户安全风控,影响使用体验。</p><p>与之相反的是少数静态IP的服务器,每一个服务器节点只有一个IPV4和/或IPV6地址。但可能总负载能力相对较低。 有的VPN为用户提供额外付费的独享IP地址,一定程度能降低各种服务对共享IP地址的封锁与风控,但也牺牲了一定的隐私。 有的服务器IP地址与服务器物理位置不一样,称为广播IP。与其相对的是原生IP,即IP地址与服务器物理地址所在地一致。 绝大多数VPN的IP地址都属于商用网络的IP段,但有极少数VPN服务器有家用网络IP段的IP地址。</p><h2>各VPN具体评分</h2><p>以笔者鸡蛋里挑骨头般严厉的找茬,市面上目前没有完美的产品。连接近完美的都没有。</p><h3>第一档 8分 瑕不掩瑜</h3><h3>Surfshark VPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>荷兰</li></ul><p><strong>严重缺陷</strong></p><ul><li>连接之后无法连接本地IP地址(LAN),这意味着无法查看路由器后台和VNC远程桌面等。担心本地IP地址中间人攻击,可以加入NAT保护嘛。</li><li>Linux客户端还有些比较严重影响使用的bug。</li></ul><p><strong>存疑之处</strong></p><ul><li>Surfshark公司与NordVPN母公司Nord Security已经合并。</li><li>Surfshark Search与DuckDuckGo的搜索结果到底有何区别?</li></ul><p><strong>可改善之处</strong></p><ul><li>双重VPN服务器无法自选,只有固定的线路。</li><li>无IPV6。</li><li>第三方测试和背书不包含客户端的安全性,客户端亦未开源。</li></ul><p><strong>优点</strong></p><ul><li>无限多台设备同时登录!而且分享是通过随机生成的代码,不用担心用户名密码被分享给的人盗取。</li><li>所有VPN服务器全内存运行,无硬盘。</li><li>德国Cure53在2021年通过对Surfshark服务器设施安全的背书。</li><li>稳定解锁流媒体。</li><li>提供数个静态IP服务器。</li><li>WireGuard通过服务器双重NAT解决隐私顾虑。</li><li>便宜(黑五+优惠码叠加后24+3个月套餐实际1.97美元/月)。</li><li>超过100个国家和地区拥有服务器(尽管很多都是广播IP)。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><p><strong>推荐指数</strong>8分,不适合需要连线局域网内设备的使用者。</p><p><strong>官网</strong><a href="https://surfshark.com/">https://surfshark.com/</a></p><div class="blockquote"><blockquote><p>来自koreyoshi_re补充:surfshark,月费巨贵,年费巨便宜,看着是想让你上了车就下不来,超售嫌疑很大。之前买过一个月,部分节点测速缓慢(测速连 1M 都没有),注册时需要邮箱。</p></blockquote></div><h3>ExpressVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>英属维尔京群岛</li></ul><p><strong>严重缺陷</strong></p><ul><li>KillSwitch只有基础的层级。</li></ul><p><strong>存疑之处</strong></p><ul><li>收购其的母公司Kape Technologies手里已经有Private Internet Access、ExpressVPN、Zenmate、CyberGhost,这是要召唤神龙么?</li><li>一名前NSA雇员Daniel Gericke成为ExpressVPN的CIO。</li><li>副主席Harold Li来自香港特别行政区(不过人在新加坡? )。</li></ul><p><strong>可改善之处</strong></p><ul><li>无IPV6。</li><li>无双重VPN功能。</li><li>iOS端无应用内KillSwitch,只能用系统自带的Always-on VPN功能。</li><li>价格稍贵(最低价99.99美元15个月)。</li><li>VPN服务器实时负载状况和在线人数不透明。</li><li>作为昂贵的VPN服务,总的IP地址池只有3000多个,意味着“万人轮”的IP地址被标记进abuse database的概率较大。</li></ul><p><strong>优点</strong></p><ul><li>VPN服务器无永久存储、全内存运行(diskless sever,或者叫RAM-only server或RAM-disk server)模式的祖师爷。独有技术TrustedServer让所有服务器完整切换到最新的软体环境而不是分批升级保障服务器端安全,由第三方,世界四大会计师行之一的英国PwC独立检验并背书。</li><li>2017年土耳其警方物理带走了ExpressVPN土耳其服务器以调查俄罗斯驻土耳其大使被刺杀案也未能拿到日志,无日志运行也有2022年英国KPMG的最新背书。</li><li>芬兰的F-Secure为ExpressVPN的Windows客户端做了详细安全检测并背书。Mac OS与Linux客户端的安全检查与背书则由Cure53完成。</li><li>稳定解锁各种流媒体服务。</li><li>不走寻常路。别的厂家拥抱WireGuard的时候,ExpressVPN却自主研发出基于wolfSSL的Lightway协议,速度如火箭一样快,安全性通过独立第三方Cure53测试并背书,核心部分在Github公布源代码。</li><li>可以分出五组虚拟网卡,同时五个不同连线(甚至包括断网和不走VPN)的路由器原生GUI客户端并带有Killswitch和超快的Lightway协议。使用时可以分出一组断网(但可以与内网IP地址连通)把本设备临时放到断网组解决切换服务器时无永久KillSwitch的弊端。市面上最好的路由器非传统协议支持(路由器手动加载OpenVPN档案设置KillSwitch很麻烦),并推出官方硬件的Aircove Router。</li><li>94个国家和地区拥有服务器(尽管有些是广播IP),70%服务器已经万兆。</li></ul><p><strong>推荐指数</strong>8分。</p><p><strong>官网</strong><a href="https://expressvpn.com">https://expressvpn.com</a></p><h3>Private Internet Access</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p><strong>严重缺陷</strong></p><ul><li>桌面版的高级切断开关是半永久KillSwitch,手滑点断开连接会断网,但不小心登出账号或关闭APP就失效,不过登出和退出的位置一般也不太容易轻易按到。 存疑之处</li><li>收购其的母公司Kape Technologies手里已经有Private Internet Access、ExpressVPN、Zenmate、CyberGhost,这是要召唤神龙么?</li></ul><p><strong>可改善之处</strong></p><ul><li>无IPV6。</li><li>美国服务器广播IP太多,并不是真实的每个州都有服务器。</li></ul><p><strong>优点</strong></p><ul><li>所有VPN服务器全内存运行,无硬盘。</li><li>除了独立第三方Deloitte Audit罗马尼亚分公司背书,还有多次法院的“背书”证明确实无日志。</li><li>所有支持系统的APP全部开源,原生Linux GUI客户端支持。</li><li>可以通过数个官方Shadowsocks服务器或用户自己搭建的本地代理做VPN的前置中转。</li><li>庞大的IP地址池,加上独享IP的库存总IP地址数是五位数。</li><li>官方支持并在加密货币支付教程中提到了使用临时邮箱注册。</li><li>稳定解锁大多数流媒体服务。</li><li>拆分隧道除了拆分App绕过VPN,还能设置IP地址绕过VPN。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><p><strong>推荐指数</strong>8分。</p><p><strong>官网</strong><a href="https://www.privateinternetaccess.com/">https://www.privateinternetaccess.com/</a></p><h3>VyprVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞士</li></ul><p><strong>存疑之处</strong></p><ul><li>虽然总部位于瑞士,但工作处位于美国德州(尽管美国宪法保障通讯自由,联邦政府无权要求VPN记录日志)。 可改善之处</li><li>Linux只有CLI,没有GUI。</li><li>不支持加密货币支付。</li><li>流媒体解锁情况并不像官方宣称的那样好。</li></ul><p><strong>优点</strong></p><ul><li>创始人Yokubaitis夫妇就是做ISP出身(Texas.Net,和现在的Data Foundry),完全拥有所有服务器控制权,并非从上游IDC厂商租用,VyprVPN的IP地址池拥有超过30万个IP地址,可能是全球IP地址最多的个人VPN服务,理论上对抗流媒体提供商“封锁”的IP储备非常丰富。</li><li>VPN业界内首个主动寻求第三方独立背书的无日志运行证明,背书方为美国Leviathan Security Group。</li><li>伪装VPN元数据的专有协议Chameleon在调试自由度不高的iOS端也能支持。</li><li>Windows与Android拥有应用拆分隧道,自主决定哪些程序不走VPN。</li><li>VPN服务器端已经开始部署流量混淆。</li><li>在部分DD-WRT路由器上支持自己的专有小程序,有Chameleon协议,市面上唯二的支持路由器运行自研协议的VPN之一(另一家为ExpressVPN)。</li></ul><p><strong>推荐指数</strong>8分。如果担心VPN提供商对网络基础设施拥有不够彻底,就不要犹豫,选择VyprVPN就是了!</p><p><strong>官网</strong><a href="https://vyprvpn.com">https://vyprvpn.com</a></p><h3>ProtonVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞士</li></ul><p><strong>存疑之处</strong></p><ul><li>Proton聘用了著名产品服务评测写手,例如仍然供职于Proprivacy的作者Douglas Crawford为其写官方博客文章。</li><li>所有VPN服务器都是通过硬盘运转,尽管都做了全盘加密处理。</li><li>VPN客户端与ProtonMail同一个登录密码。</li><li>Debian/Ubuntu版Linux客户端在Pop!OS系统(基于Ubuntu)偶尔出现永久KillSwitch在长时杀掉VPN连接本身的问题,重新登录时候永久KillSwitch也会阻止登录本身,需要先关闭永久KillSwitch登录后再开启。</li></ul><p><strong>可改善之处</strong></p><ul><li>Linux客户端只有OpenVPN UDP协议,且两步骤验证在Linux客户端形同虚设,直接靠密码就能登录。</li><li>ProtonVPN最新的伪装技术(stealth)仅可用于Android, iOS, MacOS三个系统。</li><li>Proton官方完全控制的SecureCore中转服务器(相当于双重VPN的入口)仅有瑞典、瑞士、冰岛三处节点,中转后速度有时会暴降,最后的出口服务器只能选择国家和地区不能选择国家和地区内具体地点。</li><li>只有黑五等促销期间年付价格才比较便宜,尤其是邮箱+VPN+存储+日历全家桶。</li></ul><p><strong>优点</strong></p><ul><li>今年通过了独立第三方,波兰Securitum最新的服务器无日志安全检测并背书。</li><li>来自CERN与MIT的科学家们给世界带来的礼物,值得信赖。</li><li>所有系统的客户端均完全开源并通过独立第三方,奥地利SEC Consult安全评估并背书。</li><li>有永久KillSwitch,即使Daemon挂掉也能阻止数据流入流出。</li><li>业界第一个发现iOS的VPN会有数据泄漏在VPN隧道外并积极向苹果报告。</li><li>付费服务器保障解锁流媒体,部分服务器可以直连Tor网站(.onion)而不需要额外的Tor Browser。</li><li>提供日本、美国、荷兰三国总共多达数十个免费VPN服务器,无流量上限,但是速度不稳定且不支持P2P。</li></ul><p><strong>推荐指数</strong>8分。</p><p><strong>官网</strong><a href="https://protonvpn.com">https://protonvpn.com</a></p><div class="blockquote"><blockquote><p>来自koreyoshi_re补充:proton 的 vpn 我只买过一个月,用起来中规中矩,mac 的 app 甚至不支持退出登陆(当时)。而他们的 email 服务极其恶心,一旦他们认为你“违反TOS”,就会强制停用你的邮箱,不允许你导出邮件,也不允许临时恢复 24 小时来改绑。试想一下你的重要事务都留的 proton 邮箱会怎么样,这种公司推出的 vpn 建议慎用。</p></blockquote></div><div class="blockquote"><blockquote><p>来自本博客博主补充:查询“protonmail banned users”相关事件,确有<a href="https://www.reddit.com/r/ProtonMail/comments/lodjo7/protonmail_bans_access_to_accounts_without_warning/">此类情况发生</a>。用户反馈未经通知并禁用账户,但反馈后得到解封处理。</p></blockquote></div><h2>第二档6- 7分 问题不大</h2><h3>CyberGhost</h3><p><strong>总部司法管辖地</strong></p><ul><li>罗马尼亚</li></ul><p><strong>存疑之处</strong></p><ul><li>收购其的母公司Kape Technologies手里已经有Private Internet Access、ExpressVPN、Zenmate、CyberGhost,这是要召唤神龙么?</li></ul><p><strong>可改善之处</strong></p><ul><li>OpenVPN协议无任何流量混淆选项,容易被本地ISP盯上。</li><li>解锁DAZN失败。</li><li>去广告功能不够智能。</li></ul><p><strong>优点</strong></p><ul><li>有为游戏优化的法兰克福、伦敦、纽约、巴黎服务器,低连接延迟,低丢包率。</li><li>长达45天的无条件退款政策。</li><li>世界四大审计行之一的Deloitte在2022年检查了CyberGhost的服务器网络和管理系统,并给无日志政策背书。</li><li>官网对于非必须的cookie可以自主选择是否接收。</li><li>提供免费的Firefox和Chrome(其他基于Chromium的浏览器通过Chrome商店也能安装)代理浏览器扩展。</li></ul><p><strong>推荐指数</strong>7分。玩欧服与美东服游戏,P2P下载都可以考虑。</p><p><strong>官网</strong><a href="https://www.cyberghostvpn.com/">https://www.cyberghostvpn.com/</a></p><h3>NordVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>巴拿马</li></ul><p><strong>严重缺陷</strong></p><ul><li>实测Windows客户端登录要通过网页(浏览器是会跟自己的服务器通信的,登录的网页实测含有akamaiedge、google-analytics等第三方tracker,这两者都会让原始IP暴露)。</li><li>笔者不明白为什么NordVPN要如此设计。</li></ul><p><strong>存疑之处</strong></p><ul><li>服务器曾经出现过数据泄露(在升级到全内存运行之前的事)。</li><li>Surfshark公司与NordVPN母公司Nord Security已经合并。</li><li>NordLynx协议没有开源。</li></ul><p><strong>可改善之处</strong></p><ul><li>Linux只有CLI,无GUI。</li><li>端对端加密云端存储NordLocker是闭源的,不如Proton家的开源全家桶来得放心。</li></ul><p><strong>优点</strong></p><ul><li>所有VPN服务器全内存运行,无硬碟。</li><li>无日志运行通过PWC瑞士分公司2019年与2021年两次背书。</li><li>美国Versprite完成深度安全测试并背书。</li><li>稳定解锁流媒体。</li><li>NordLynx协议基于WireGuard非常快,并且通过双重NAT方式解决了原版WireGuard服务器留下IP地址的问题。</li><li>iOS端有整合进应用内的KillSwitch。</li><li>原生支持M1芯片的Mac(那么M2应该也可以)。</li><li>除了支持加密货币支付,还支持线上亚马逊和包括沃尔玛在内的线下商店购买实体激活码刮刮卡。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><p><strong>推荐指数</strong>7分,不适合有隐私顾虑的Windows用户,但绝对是广大果粉的最优选择,在iOS和Mac表现都是顶级水准。</p><p><strong>官网</strong><a href="https://nordvpn.com">https://nordvpn.com</a></p><h3>Hide.me</h3><p><strong>总部司法管辖地</strong></p><ul><li>马来西亚</li></ul><p><strong>存疑之处</strong></p><ul><li>总部位于马来西亚(尽管Hide.me官方宣称根据马来西亚法律,他们的VPN服务器可以无日志运行)。</li><li>早在2015年,Hideme官方就宣称自己是最早的通过独立第三方背书的VPN(VyprVPN是2018年),但背书者为自然人个人(Defense Code Ltd的创办人和总裁Leon Juranic),且未公开详细报告。 可改善之处</li><li>只有Linux的CLI客户端在Github开源,且Linux端设置比较复杂,无直观的GUI。</li><li>速度稍慢。</li></ul><p><strong>优点</strong></p><ul><li>付费服务器能解锁很多流媒体。</li><li>Windows和Mac客户端支持SoftEther协议。</li><li>所有VPN服务器全内存运行,无硬盘(通过与他们的客服联系后确认)。</li><li>支持门罗币支付。</li><li>IPV6支持。</li><li>提供数个静态IP的VPN服务器。</li><li>Stealth Guard中的Bind Internet to VPN就是永久KillSwitch功能,即使客户端关闭,KillSwitch依然在工作。</li><li>提供8个地点的免费VPN服务器,免费用户同样享受24/7真人客服实时对话服务,但每月限制10GB流量。实际上新下载Windows客户端直接免费送7天高级服务器使用权无流量上限,而且不需要提供任何信息,包括邮箱。</li><li>提供免费的Firefox和Chrome(其他基于Chromium的浏览器通过Chrome商店也能安装)代理浏览器扩展。</li></ul><p><strong>推荐指数</strong>7分。</p><p><strong>官网</strong><a href="https://hide.me/">https://hide.me/</a></p><h3>PureVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>英属维尔京群岛(曾经香港特别行政区)</li></ul><p><strong>存疑之处</strong></p><ul><li>曾经向执法部门出卖过用户(但从技术角度来看不是提供了连接内容日志,而是用户自己已经暴露了足够多的信息,criminals are cowards)。 可改善之处</li><li>端口转发功能要额外加一点点钱。 优点</li><li>Windows和Android的客户端有应用拆分隧道,可以选择部分应用不走VPN。</li><li>便宜的独享IP地址价格。</li><li>在出卖用户事件几年后,PureVPN决定让公众信服,业内率先采取“连续背书”模式,在世界四大会计师行之一的英国KPMG已经背书两次前提下,邀请KPMG任何时候可以不请自来额外做突击检查。</li></ul><p><strong>推荐指数</strong>7分。</p><p><strong>官网</strong><a href="https://purevpn.com">https://purevpn.com</a></p><h3>Windscribe</h3><p><strong>总部司法管辖地</strong></p><ul><li>加拿大</li></ul><p><strong>存疑之处</strong></p><ul><li>官方在App的news feed栏里下作地骑脸嘲讽Kape Technologies,发布愚人节玩笑——Windscribe改名为牛屎VPN,被大大大大大企业Gape Technologies以高高高高高价收购。</li><li>无日志政策尚未有独立的第三方背书。</li><li>2021年乌克兰警方物理带走服务器做调查,但Windscribe宣称没有流量被监控。此后Windscribe开始“”事后诸葛亮“”式的安全更新,并准备升级成去硬盘服务器(只运行在内存上)。</li><li>新账号如果通过公共代理或VPN的IP地址注册,需要联系客服解锁才能完成支付,否则是永远的免费账号。</li></ul><p><strong>可改善之处</strong></p><ul><li>3天无条件退款政策。</li><li>无24/7在线真人客服,官网只有个机器人,与客服联系需要通过邮件或Reddit。</li><li>App在Github开源,但仅限Windows/MacOS/Linux桌面端。</li><li>一年里仅有少数几轮优惠,平日年付价格高达69美元,优惠期是29美元。</li><li>部分服务器禁止P2P(但不是很大的问题)。</li><li>SmartDNS功能要额外加钱。</li></ul><p><strong>优点</strong></p><ul><li>App的API有多个备用线路。</li><li>不想在无折扣期间年付可以自定义两到三个服务器国家和地区按月订购,无限流量每月1美元,每一个国家和地区每月1美元。</li><li>无限台同时登录设备。</li><li>可加钱96美元/年购买共享的家宽IP段固定IP,享受隐私的同时还能有家用IP带来的便利。</li><li>拆分隧道可以添加应用、IP地址或者域名。</li><li>近乎完美的流媒体支持。</li><li>免费账号有多达11个国家和地区的超多个服务器地点可供选择且不限速(对,付费用户专享的服务器地点并不占总数中的大多数),且具备DNS拦截恶意软件功能,但每个月流量限制10GB,偶尔会有coupon增加几十GB的免费流量,免费服务器解锁流媒体性能也良好,我用Windscribe免费服务器解锁成功了F1 Pro。</li><li>唯一的带KillSwitch和修改浏览器时区、语言与IP地址所在地一致功能的浏览器代理插件。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><div class="blockquote"><blockquote><p>本博客博主补充:Windscribe在移动端有着比较好的中文(其它多语言)支持,但开源的桌面端仅有英文支持。白名单需要区网页进行设置,桌面端亦有隧道分离功能。</p></blockquote></div><p><strong>推荐指数</strong>7分。</p><p><strong>官网</strong><a href="https://windscribe.com/">https://windscribe.com/</a></p><h3>OVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞典</li></ul><p><strong>可改善之处</strong></p><ul><li>只有10天无条件退款政策。</li><li>桌面端无拦截广告功能。</li><li>OpenVPN协议无任何混淆选项,容易被本地ISP识别。</li><li>远距离的VPN服务器速度下降明显。</li><li>无24/7在线的真人客服。</li></ul><p><strong>优点</strong></p><ul><li>法庭“背书”过的无日志,甚至有律师费或诉讼费用支出。</li><li>对收到各种数据请求情况透明。</li><li>邮箱不是必须要填写的。</li><li>支持比特币、以太坊和门罗币支付。</li><li>所有VPN服务器均为自助搭建托管(co-located),全内存运行,无硬盘,支持IPV6。</li><li>WireGuard服务器自动删除三分钟无密钥交换的对等节点的信息,最小化信息留存可能。</li><li>半年付与年付都有免费附加的双重VPN功能。</li></ul><p><strong>推荐指数</strong>7分,不适合需求速度的用户。</p><p><strong>官网</strong><a href="https://www.ovpn.com">https://www.ovpn.com</a></p><h3>WeVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>英属维尔京群岛</li></ul><p><strong>存疑之处</strong></p><ul><li>2020年才开始运营的业界萌新。</li></ul><p><strong>可改善之处</strong></p><ul><li>加密货币支付无法退款。</li><li>这么雄心壮志的话,干脆把客户端开源了吧。</li><li>独立第三方的背书目前还没有。</li></ul><p><strong>优点</strong></p><ul><li>路线图十分明确,一步一个脚印向前进,功能越来越强大,看起来充满雄心,也能给用户信心。</li><li>在完全内存运行基础上通过LUKS加密进一步保障VPN服务器安全,服务器自动化管理。</li><li>支持门罗币支付。</li><li>提供免费的加密公共DNS服务。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><p><strong>推荐指数</strong>7分,前途无量。</p><p><strong>官网</strong><a href="https://wevpn.com">https://wevpn.com</a></p><h3>PrivateVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞典</li></ul><p><strong>存疑之处</strong></p><ul><li>并未选择仅内存运转的服务器。</li></ul><p><strong>可改善之处</strong></p><ul><li>长期订阅只有72美元三年付选项(尽管官方美化成12+24个月)。</li><li>无原生Linux支持。</li><li>偶有掉速。</li></ul><p><strong>优点</strong></p><ul><li>官网对于非必须的cookie可以自主选择是否接收。</li><li>在KillSwitch基础上增加了应用卫士,VPN意外断联时候自动关闭选择的App。</li><li>优秀的流媒体支持,解锁超过30个Netflix区库。</li><li>执法机关多次“背书”的无日志记录。</li></ul><p><strong>推荐指数</strong>7分。</p><p><strong>官网</strong><a href="https://privatevpn.com/">https://privatevpn.com/</a></p><h3>Mullvad</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞典</li></ul><p><strong>存疑之处</strong></p><ul><li>无密码无邮箱模式,即只有用户数字号码,尽管隐私极佳,但账号被盗将变成与盗号者“共用5个设备槽”的情况。</li></ul><p><strong>可改善之处</strong></p><ul><li>尚未实现全服无硬盘,但哪些服务器使用硬盘,哪些服务器是租用在App里可查看。</li><li>最近一次独立第三方德国Cure53背书已经是2020年了。</li><li>双重VPN仅限WireGuard协议,且iOS与Android App没有双重VPN。</li></ul><p><strong>优点</strong></p><ul><li>所有系统(Windows, MacOS, Linux, Android, iOS)客户端完全开源。</li><li>最佳的Linux VPN GUI客户端。Windows/MacOS与Linux拥有真正的随系统启动与融合进系统底层防火墙的永久KillSwitch,其中Windows使用WFP,Linux使用nftables, MacOS使用PF。我做过Wireshark嗅探Linux虚拟机网络流量的测试,结合启动阶段的Mullvad Daemon提示,推断完全不会暴露虚拟机的通过NAT共享自宿主机的IP地址。</li><li>独立的原生Linux Arm客户端,最佳的Raspberry Pi支持。</li><li>月付与年付价格都一样,平日与促销时期价格都一样,5欧元/月,账号可以用完就扔,加密货币(比特币、比特币现金与门罗币)支付每月优惠至4.5欧元且不通过中介。</li><li>在一些合作的线上和线下商店出售实体激活码刮刮卡。</li><li>运营主体Mullvad VPN AB的母公司Amagicom AB为一家独立、私有的瑞典小公司,还在做开源固件(2022年9月19日-21日在德国波鸿举办的开源固件会议主办方为谷歌、Mullvad与9elements),和类似Yubikey的硬件安全验证器Tillitis TKey,并且做到了硬件开源。</li><li>业界第一个发现Android VPN有跟iOS VPN类似的VPN隧道外流量的问题,并积极向谷歌报告。</li><li>完全自由选择入口和出口服务器的双重VPN。</li><li>支持IPV6。</li><li>OpenVPN有Shadowsocks和V2Ray两种混淆网桥。</li><li>WireGuard也有UDP over TCP混淆法,并在服务器端每隔180秒删除一次无握手反馈的对等节点信息。</li><li>提供免费公共DNS服务Mullvad DNS。</li></ul><p><strong>推荐指数</strong>7分,不适合小白,不适合看流媒体,但经常使用Linux系统工作的码农和隐私技术宅狂喜。</p><p><strong>官网</strong><a href="https://mullvad.net">https://mullvad.net</a></p><div class="blockquote"><blockquote><p>来自koreyoshi_re补充:速度不错,标称1G带宽实际测速都能500M+,标称10G实际都能2G+;支持 tor 注册,xmr 加密货币付款,全程无需任何身份信息;可以导出为标准 wireguard 文件,且真的不限流量不限速;但是他们有好多出口 ip 都被中国墙了,挂全局 vpb访问中国网站时,可能打不开;有特殊加成的地区(土耳其,阿根廷,印度,台湾)他们基本都没有。</p></blockquote></div><h3>Atlas</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p><strong>严重缺陷</strong></p><ul><li>Android客户端不直接提供apk,只有通过Google Play下载。</li></ul><p><strong>存疑之处</strong></p><ul><li>2019年才娓娓道来的业界萌新,并未久经沙场。</li><li>已经被NordVPN母公司Nord Security收购。</li><li>VPN服务器采用全盘加密而非仅内存模式。</li><li>KillSwitch启动时候的自动重连有些问题。</li></ul><p><strong>可改善之处</strong></p><ul><li>Linux客户端只有.deb的CLI,无GUI,更无法兼容Red Hat系列系统(例如Fedora,CentOS)。</li><li>Windows客户端偶发卡顿</li><li>没有类似白名单的分流功能</li></ul><p><strong>优点</strong></p><ul><li>独有的SafeSwap技术像代理一样能在不同的在线会话跳转不同IP地址,进一步保障隐私和规避广告商的追踪。</li><li>付费服务器稳定解锁流媒体、无同时登录设备数限制</li><li>各个客户端UI统一、界面设计清晰美观</li><li>所有系统的app均有荷兰阿姆斯特丹、美国洛杉矶美国纽约三个地点的免费VPN服务器,且支持P2P,但每月限制5GB流量。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><p><strong>推荐指数</strong>7分。</p><p><strong>官网</strong><a href="https://atlasvpn.com/">https://atlasvpn.com/</a></p><h3>PrivadoVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞士</li></ul><p><strong>可改善之处</strong></p><ul><li>VPN网络规模较小,服务器和IP地址偏少。</li><li>缺乏拦截广告等附加功能。</li><li>付费用户无法解锁DAZN和日区Netflix。</li></ul><p><strong>优点</strong></p><ul><li>提供阿根廷布宜诺斯艾利斯,巴西圣保罗,加拿大蒙特利尔,法国巴黎,德国法兰克福,墨西哥墨西哥城,荷兰阿姆斯特丹,瑞士苏黎世,英国伦敦,美国洛杉矶、迈阿密、纽约、华盛顿共10国14城市的免费服务器,每月10GB流量限制,而免费服务器也可以随缘解锁美区Netflix。</li><li>KillSwitch直接就是永久的(相当于断网的防火墙),即使没有连接VPN时也不会暴露初始IP地址。</li></ul><p><strong>推荐指数</strong>7分。</p><p><strong>官网</strong><a href="https://privadovpn.com">https://privadovpn.com</a></p><h3>AzireVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞典</li></ul><p><strong>严重缺陷</strong></p><ul><li>Android客户端不直接提供apk,只有通过Google Play下载。</li></ul><p><strong>可改善之处</strong></p><ul><li>无原生Linux客户端,需要下载WireGuard组件。</li><li>加密货币支付无退款。</li><li>无法解锁Netflix等。</li></ul><p><strong>优点</strong></p><ul><li>IPV6支持。</li><li>VPN服务器来自永久购买而非租用,无硬盘仅通过内存运行,并物理屏蔽了USB、VGA和串行接口。</li></ul><p><strong>推荐指数</strong>7分。不适合用BlissOS、LinageOS等去谷歌商店第三方开源安卓系统的使用者。</p><p><strong>官网</strong><a href="https://www.azirevpn.com/">https://www.azirevpn.com/</a></p><h3>IVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>直布罗陀</li></ul><p><strong>存疑之处</strong></p><ul><li>无密码无邮箱的纯数字账号,被盗号将无法重新取得控制。</li><li>“同时在线设备数”算的是未从IVPN的中心验证系统登出数而不是实际连线数,意味着两台设备直接关机的话第三台设备登录时候必须先顶号。 可改善之处</li><li>价格比市场定位相似的友商Mullvad贵很多,标准套餐月付6美元,年付60美元,却只允许两台设备同时登录,高级套餐终于支持自由的双重VPN和端口转发,价格却是年付100美元且只允许7台设备同时登录,因为美元上涨以欧元结算的Mullvad已经显得更划算了。 优点</li><li>隐私保护超好,所有系统的客户端全部开源,德国Cure53作为独立第三方使用检验了IVPN客户端、Daemon安全性并背书,早先Cure53也证明了IVPN服务器不记录日志。。</li><li>可通过本地代理做OpenVPN TCP的前置网桥(与Private Internet Access类似)。</li><li>通过特殊技术让服务器的WireGuard避免公网IP地址残留。</li><li>IVPN团队规模小而独立,资助EFF等机构,还是Tor的某出口节点机主。</li><li>部分服务器支持IPV6。</li><li>桌面端的KillSwitch在系统加载时候就已经生效,意味着不会有哪怕一丁点时间的IP地址外泄,支持真永久KillSwitch,哪怕登录之前也可以选择封锁网络连接。</li><li>支持门罗币和比特币、比特币闪电链支付,有独立的BTCPay服务器。</li></ul><p><strong>推荐指数</strong>6分。是Mullvad的下位替代品。</p><p><strong>官网</strong><a href="https://ivpn.net">https://ivpn.net</a></p><h3>AdGuard VPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>塞浦路斯</li></ul><p><strong>存疑之处</strong></p><ul><li>AdGuard最早创立于莫斯科(希望是一群像杜叔叔一样热爱自由的人)。</li><li>Android端KillSwitch依赖系统自带的。</li><li>没有独立第三方背书。</li></ul><p><strong>可改善之处</strong></p><ul><li>服务器规模小,没有新西兰服务器。</li><li>不支持加密货币支付。</li><li>无24/7在线真人客服。</li><li>作为以保护隐私见长的公司,没有Linux客户端。</li></ul><p><strong>优点</strong></p><ul><li>新人可以在12个地点的服务器免费体验5GB流量,初始3GB,确认邮箱和增加另一台设备各增加1GB流量。</li><li>DNS选项丰富,除了AdGuard VPN内置DNS外,还可以选择能过滤广告和追踪器或不过滤任何信息的的AdGuard DNS,额外增加去成人内容激活安全搜索与安全模式的家庭保护型AdGuard DNS,谷歌DNS,Cloudflare DNS家族,Open DNS家族, Quad9, 或者自主添加DNS。</li><li>可以自主把特定域名、IP地址或者应用排除在VPN隧道外。</li><li>母服务AdGuard团队声誉良好。</li><li>独有协议在掩盖VPN流量特征同时保持高速度。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><div class="blockquote"><blockquote><p>来自本博客博主补充:AdGuard VPN可以和AdGuard在移动端上共同使用;VPN隧道使用良好;团队反应比较迅速</p></blockquote></div><p><strong>推荐指数</strong>6分。</p><p><strong>官网</strong><a href="https://adguard-vpn.com/">https://adguard-vpn.com/</a></p><h3>IPVanish</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p><strong>存疑之处</strong></p><ul><li>曾经向法庭或警方出卖过用户的上网记录(虽然该罪犯是罪有应得)。</li><li>母公司Ziff Davis集团太过于家大业大。</li></ul><p><strong>可改善之处</strong></p><ul><li>不支持加密货币支付,只有信用卡和PayPal可选。</li><li>无原生Linux客户端。</li></ul><p><strong>优点</strong></p><ul><li>拥有自己独立的骨干网。</li><li>同时使用设备数量无限制。</li><li>2022年美国Leviathan Security Group作为第三方,独立检查了IPVanish的服务器配置并给无日志政策背书。</li></ul><p><strong>推荐指数</strong>6分。</p><p><strong>官网</strong><a href="https://ipvanish.com">https://ipvanish.com</a></p><h3>AirVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>意大利</li></ul><p><strong>存疑之处</strong></p><ul><li>尽管隐私政策大饼无比美好,但尚未有第三方独立背书证明确实无日志。</li></ul><p><strong>可改善之处</strong></p><ul><li>没有iOS客户端。</li><li>客户端Eddie在Linux Debian/Ubuntu/Fedora等系统都不能开机自动启动,需要先输入系统管理员密码。</li><li>作为偏向隐私与数据安全的VPN,DNS不带拦截广告和恶意软件功能。</li><li>一年只有万圣节、黑五和圣诞期间有优惠。</li></ul><p><strong>优点</strong></p><ul><li>客户端Eddie在所有支持系统完全开源,可调试选项丰富,业界少有的原生Arch Linux客户端,可安装也可用TARGZ、AppImage和Mono的便携版,除了GUI客户端Eddie外还有融入系统底层的完全开源CLI客户端AirVPN Suite。</li><li>真正的永久Killswitch,即使Daemon挂了,原始IP地址也无法对外通信。</li><li>所有VPN服务器全内存运行,无硬盘,支持IPV6。</li><li>可以不填写邮箱或者用10分钟的临时邮箱注册,通过用户名和密码就能登录与进用户后台。</li><li>付款信息与用户信息分开,加密货币支付更是有独立的接收地址而不是通过CoinGate之类的第三方中介,支持门罗币支付。</li><li>官网没有追踪用户的cookie。</li><li>由律师、活动家、白客等创立和运营,注册地佩鲁贾是个小城,为维基解密捐过款。</li></ul><p><strong>推荐指数</strong>6分,不适合小白和流媒体狂人,适合大神用户。</p><p><strong>官网</strong><a href="https://airvpn.org">https://airvpn.org</a></p><h3>Ivacy</h3><p><strong>总部司法管辖地</strong></p><ul><li>新加坡</li></ul><p><strong>存疑之处</strong></p><ul><li>总部位于新加坡(可怀疑的理由与马来西亚一样)。</li></ul><p><strong>可改善之处</strong></p><ul><li>OpenVPN没有混淆能力。</li></ul><p><strong>优点</strong></p><ul><li>可邮件联系客服批发购买服务。</li><li>虽然Linux系统只有CLI客户端,但少有的支持Arch Linux,当然还支持Debian,Ubuntu,Fdeora,CentOS和Linux Mint。</li><li>完善的流媒体解锁支持,官方承诺解锁16个主要的Netflix区库等流媒体服务。</li><li>仍在打折期的黑五折扣5年60美元赠送1个月来自西班牙的2TB开源端对端加密云盘服务Internxt,并且,可!以!白!嫖!与客服聊天后得知,即使redeem了赠送的Internxt激活码,VPN服务依然可以30天内无条件退款,相当于白嫖一个月VPN+云端硬碟。</li><li><a href="https://stacksocial.com/?rid=10758769">StackSocial</a>上有低价的激活码(没有退款政策)。</li></ul><p><strong>推荐指数</strong>6分。</p><p><strong>官网</strong><a href="https://www.ivacy.com/">https://www.ivacy.com/</a></p><h3>ZoogVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>希腊</li></ul><p><strong>存疑之处</strong></p><ul><li>无日志政策无第三方独立背书。</li></ul><p><strong>可改善之处</strong></p><ul><li>Android没有应用内嵌KillSwitch,需借助系统设置。</li><li>只有7天无条件退款。</li></ul><p><strong>优点</strong></p><ul><li>每月10GB免费流量,有7台服务器可供使用,其中德国杜塞尔多夫2号服务器、荷兰阿姆斯特丹1号服务器、德国测试1号服务器与新加坡测试1号服务器支持P2P,德国杜塞尔多夫2号服务器、新加坡2号服务器、德国测试1号服务器和新加坡测试1号服务器带抗封锁技术ZoogShadow,德国测试1号服务器和新加坡测试1号服务器甚至还带有流媒体优化技术ZoogPlay。</li></ul><p><strong>推荐指数</strong>6分。</p><p><strong>官网</strong><a href="https://zoogvpn.com/">https://zoogvpn.com/</a></p><h3>CactusVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>摩尔多瓦</li></ul><p><strong>存疑之处</strong></p><ul><li>无日志政策无第三方独立背书。</li></ul><p><strong>可改善之处</strong></p><ul><li>流媒体解锁能力差。</li><li>P2P下载仅限少数几个服务器。</li><li>无原生Linux支持。</li></ul><p><strong>优点</strong></p><ul><li>无同时登录设备数限制。</li><li>多种流量混淆技术。</li></ul><p><strong>推荐指数</strong>6分。</p><p><strong>官网</strong><a href="https://www.cactusvpn.com/">https://www.cactusvpn.com/</a></p><h3>VPNArena</h3><p><strong>总部司法管辖地</strong></p><ul><li>保加利亚</li></ul><p><strong>存疑之处</strong></p><ul><li>全盘加密而非运行在内存上。</li></ul><p><strong>可改善之处</strong></p><ul><li>Linux仅有CLI。</li><li>仅有极少数服务器支持混淆协议Stunnel。</li></ul><p><strong>优点</strong></p><ul><li>美国任意州的独享IP只要额外加20美元/年,不过有月度流量限制(500GB到2000GB不等)。</li></ul><p><strong>推荐指数</strong>6分。</p><p><strong>官网</strong><a href="https://vpnarea.com/">https://vpnarea.com/</a></p><h3>VPN.AC</h3><p><strong>总部司法管辖地</strong></p><ul><li>罗马尼亚</li></ul><p><strong>存疑之处</strong></p><ul><li>Android客户端无应用内KillSwitch,需要调用系统的Always-on VPN功能。</li><li>Linux客户端两年未更新了,仅支持Debian/Ubuntu及分支。</li><li>一部分日志会保留到当次VPN会话结束。</li></ul><p><strong>可改善之处</strong></p><ul><li>无条件退款政策仅7天。</li><li>无24/7在线真人客服,与客服联系有工单(可转发为邮件)和端对端加密通讯软件Wire两种方式。</li><li>双重VPN只有有限的预设路径。</li><li>年付价格55.1美元,两年付价格85.5美元,对比同档次竞品偏贵,没有黑五特价。</li><li>只能解锁部分流媒体(可解锁Netflix)。</li><li>经实测发现即使连接美国VPN服务器,提供DNS的服务器依然在加拿大,可能会增加延迟。 优点</li><li>母公司为一家独立的罗马尼亚小公司Netsec Interactive Solutions,同时在做安全硬件存储产品和渗透测试的业务。</li></ul><p><strong>推荐指数</strong>6分。</p><p><strong>官网</strong><a href="https://vpn.ac/">https://vpn.ac/</a></p><h2>第三档 5分 中规中矩</h2><h3>TunnelBear</h3><p><strong>总部司法管辖地</strong></p><ul><li>加拿大</li></ul><p><strong>严重缺陷</strong></p><ul><li>不允许P2P下载!</li><li>客户端程序崩溃时KillSwitch也会失效。</li></ul><p><strong>可改善之处</strong></p><ul><li>缺乏实时在线客服。</li><li>无原生Linux支持。</li><li>只有48个VPN服务器国家和地区。</li><li>无法解锁DAZN,Netflix只能解锁英国和美国区。</li><li>只有每月500MB流量限制的免费账号有什么用呢?推特夸一下也只能再增加1GB。</li></ul><p><strong>优点</strong></p><ul><li>聘请Cure53进行年度安全测试与背书。 -Android和iOS支持应用拆分隧道,可选择某些应用不过VPN。</li></ul><p><strong>推荐指数</strong>5分。</p><p><strong>官网</strong><a href="https://www.tunnelbear.com/">https://www.tunnelbear.com/</a></p><h3>Perfect Privacy</h3><p><strong>总部司法管辖地</strong></p><ul><li>瑞士</li></ul><p><strong>存疑之处</strong></p><ul><li>凭什么卖得比ExpressVPN还贵?(年付119.99美元,两年付214.95美元)</li><li>无理由退款只有7天。</li><li>无原生iOS客户端。</li><li>解锁流媒体的水平完全对不起售价。</li></ul><p><strong>优点</strong></p><ul><li>荷兰洛特丹服务器通过荷兰警方“考验”。</li><li>经常更新的透明报告。</li><li>支持IPV6和多达最多四跳的多重VPN,拦截广告和钓鱼网站技术出众,有基于神经网络的智能连接优化。</li><li>所有VPN服务器的socks5和http代理功能可直接解析洋葱(.onion)地址。</li></ul><p><strong>推荐指数</strong>5分。以上优点有的只是花里胡哨。</p><p><strong>官网</strong><a href="https://www.perfect-privacy.com/">https://www.perfect-privacy.com/</a></p><h3>StrongVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p><strong>存疑之处</strong></p><ul><li>运营主体Strong Technology, LLC的母公司Ziff Davis集团过于家大业大。</li></ul><p><strong>可改善之处</strong></p><ul><li>无原生Linux客户端。</li></ul><p><strong>推荐指数</strong>5分。</p><p><strong>官网</strong><a href="https://strongvpn.com/">https://strongvpn.com/</a></p><h3>TorGuard</h3><p><strong>总部司法管辖地</strong>-美国</p><p><strong>存疑之处</strong></p><ul><li>Android没有应用内KillSwitch,需要调用系统的KillSwitch和block connections without VPN选项。</li><li>官网封禁了来自一些其他VPN的IP的浏览,不知道是否是误杀。就算能浏览的IP也要先过一遍Cloudflare的保护。</li></ul><p><strong>可改善之处</strong></p><ul><li>加密邮箱服务Private-Email价格巨贵无比。</li><li>只有七天退款,且前提条件是未购买独享IP的普通套餐订阅。</li><li>解锁流媒体的服务器需要额外加钱买独享IP地址。</li></ul><p><strong>优点</strong></p><ul><li>这个名字会让人联想到Tor Project,但实际上两者并没有直接关联。官方解释是TorGuard的tor字眼代表torrenting,以表达该VPN对于安全使用bittorrent的支持,而TorGuard官方亦有捐助Tor Project。</li><li>少有的原生客户端支持ArchLinux,甚至Arm Arch。</li><li>全新业务,提供业内首家基于WireGuard的自助管理远程服务器后台,可连接居家设备的云端VPN服务(每月限制250GB流量)。</li></ul><p><strong>推荐指数</strong>5分。希望云端VPN能做成独门绝技。</p><p><strong>官网</strong><a href="https://torguard.net">https://torguard.net</a></p><h3>Trust.Zone</h3><p><strong>总部司法管辖地</strong></p><ul><li>塞舌尔</li></ul><p><strong>可改善之处</strong></p><ul><li>Mac上速度偏慢。</li><li>支持协议太少。</li><li>退款仅10天且前提条件是流量总消耗未超过1GB。</li></ul><p><strong>优点</strong></p><ul><li>部分服务器是静态IP。</li><li>提供3天1GB免费试用。</li></ul><p><strong>推荐指数</strong>5分。</p><p><strong>官网</strong><a href="https://trust.zone/">https://trust.zone/</a></p><h3>HideMyAss</h3><p><strong>总部司法管辖地</strong></p><ul><li>英国</li></ul><p><strong>存疑之处</strong></p><ul><li>2011年向警方提供过用户日志(Lulzsec事件)导致HideMyAss口碑不佳。</li></ul><p><strong>可改善之处</strong></p><ul><li>OpenVPN协议无任何伪装。</li><li>无原生Linux客户端。</li></ul><p><strong>优点</strong></p><ul><li>被Avast收购,运营已经换得差不多了,跟当年的HideMyAss两波人了,对过去的事情态度很诚恳,也做了独立第三方,美国VerSprite的无日志背书。</li><li>官网提供免费在线页面级代理。</li></ul><p><strong>推荐指数</strong>5分。 <strong>官网</strong><a href="https://www.hidemyass.com/">https://www.hidemyass.com/</a></p><h2>第四档 4分 问题较多</h2><h3>KeepSolid VPN Unlimited</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p><strong>严重缺陷</strong></p><ul><li>原始IP地址会保留到当次VPN会话结束。</li></ul><p><strong>存疑之处</strong></p><ul><li>提供99.99美元终身套餐,但非终身套餐价格都不划算。</li></ul><p><strong>可改善之处</strong></p><ul><li>只有三个服务器允许P2P。</li></ul><p><strong>推荐指数</strong>4分。</p><p><strong>官网</strong><a href="https://www.vpnunlimited.com/">https://www.vpnunlimited.com/</a></p><h3>ZenMate</h3><p><strong>总部司法管辖地</strong></p><ul><li>德国</li></ul><p><strong>严重缺陷</strong></p><ul><li>无法自主选择服务器城市。</li></ul><p><strong>存疑之处</strong></p><ul><li>收购其的母公司Kape Technologies手里已经有Private Internet Access、ExpressVPN、Zenmate、CyberGhost,这是要召唤神龙么?</li></ul><p><strong>可改善之处</strong></p><ul><li>付款方式只有信用卡和PayPal。</li><li>Mac和iOS只有IKEv2协议。</li></ul><p><strong>推荐指数</strong>4分。</p><p><strong>官网</strong><a href="https://zenmate.com/">https://zenmate.com/</a></p><h2>第五档 2-3分 不要购买</h2><h3>MozillaVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p>智商税,用的服务器都是Mullvad的,还卖得比Mullvad贵,而且不支持加密货币支付!</p><p><strong>推荐指数</strong>3分(3分是给Mozilla面子)。</p><h3>Whoer VPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>塞浦路斯</li></ul><p><strong>存疑之处</strong></p><ul><li>官方社交账号有VK,网站内第三方tracker有Yandex,令人怀疑运营团队是否与俄罗斯有资金关联。</li><li>30天“有条件”退款</li></ul><p><strong>可改善之处</strong></p><ul><li>OpenVPN协议无任何伪装。</li><li>无原生Linux支持。</li><li>位于荷兰的唯一免费服务器速度基本属于不可用状态。</li></ul><p><strong>优点</strong></p><ul><li>支持双重VPN。</li><li>whoer.net是一个出色的系统与浏览器user agent测试网站。</li></ul><p><strong>推荐指数</strong>3分。</p><p><strong>官网</strong><a href="https://whoer.net">https://whoer.net</a></p><h3>Hotspot Shield</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p><strong>严重缺陷</strong></p><ul><li>记录一些重要的连接日志。</li></ul><p><strong>存疑之处</strong></p><ul><li>母公司Aura就因为拥有几家对隐私极不友好的VPN而臭名昭著,例如Betternet和TouchVPN。</li></ul><p><strong>优点</strong></p><ul><li>提供不限速不限流量的免费代理浏览器扩展,虽然服务器极为有限。(但友商家连免费公共代理都是没有日志的!)</li><li>基于TLS的Catapult Hydra专有协议。</li><li>StackSocial上有低价的激活码(没有退款政策)。</li></ul><p><strong>推荐指数</strong>2分。</p><p><strong>官网</strong><a href="https://www.hotspotshield.com">https://www.hotspotshield.com</a></p><h3>Astrill</h3><p><strong>总部司法管辖地</strong></p><ul><li>塞舌尔(曾经澳大利亚)</li></ul><p>现在的售价下缺点能掩盖一切优点!</p><p><strong>推荐指数</strong>2分,奇贵无比,完全不值这个价。</p><p><strong>官网</strong><a href="https://www.astrill.com/">https://www.astrill.com/</a></p><h3>SlickVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p><strong>存疑之处</strong></p><ul><li>只有Windows和Mac客户端。</li><li>StackSocial上还有超低价终身激活码,有智商税嫌疑。</li></ul><p><strong>推荐指数</strong>2分。</p><p><strong>官网</strong><a href="https://www.slickvpn.com/">https://www.slickvpn.com/</a></p><h2>第六档 0分 碰都别碰</h2><h3>TouchVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>美国</li></ul><p>直接无视! 推荐指数0分。</p><h3>Hola VPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>以色列</li></ul><p>绝对不要去碰! 推荐指数0分。</p><h3>Betternet</h3><p><strong>总部司法管辖地</strong></p><ul><li>加拿大</li></ul><p>根本不要去考量! 推荐指数0分。</p><h2>已经死掉或被收购后不再独立运作的VPN</h2><p>纪念的同时不要被山寨的名字骗了</p><h3>TigerVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>斯洛伐克</li></ul><p>因为Covid19带来的严重影响,从2022年7月15日10:00UTC时间起永久停止服务了(悲)。</p><h3>BlackVPN</h3><p><strong>总部司法管辖地</strong></p><ul><li>香港特别行政区</li></ul><p>不知何原因停运了,2018年还好好的。</p><h3>IbVPN(Invisible Browsing VPN)</h3><p><strong>总部司法管辖地</strong></p><ul><li>罗马尼亚</li></ul><p>被StrongVPN收购了,已经成为了StrongVPN的一部分。</p><h3>SaferVPN</h3><p><strong>总部司法管辖地</strong>以色列</p><p>被StrongVPN收购了,已经成为了StrongVPN的一部分。</p><h2>冤大头懒人专用VPN路由器(无需复杂手动设置,但价格很贵)</h2><ul><li><p>VILFO路由器 原生支持VPN部分列表: AzireVPN, ExpressVPN, HMA(HideMyAss), Hideme, IPVanish, Ivacy, IVPN, Mullvad, NordVPN, OVPN, Perfect Privacy, Private Internet Access, PrivateVPN, ProtonVPN, PureVPN, Surfshark VPN, VPNArena, Websecuritas, WeVPN, Windscribe 支持协议: OpenVPN, WireGuard 功能:KillSwitch,DNS保护,家长控制,基于域名、IP地址、端口的多种拆分隧道模式,(即将实现)物联网设备隔离…… 速度:最高千兆WireGuard,最高500兆OpenVPN。</p></li><li><p>FlashRouter路由器 FlashRouter Privacy App固件支持VPN部分列表: AirVPN, AnonVPN, Astrill, Azire VPN, CyberGhost, EarthVPN, ExpressVPN, Hide Me, HMA, Hotspot Shield, IPVanish, IronSocket, Ivacy, IVPN, Mullvad, NordVPN, Perfect Privacy, Private VPN, Private Internet Access, ProtonVPN, PureVPN, SlickVPN, StrongVPN, Surfshark, Torguard, Trust.Zone, TunnelBear, VPN.ac, VPNArea, Keepsolid VPN Unlimited, VyprVPN, Windscribe, Zenmate 支持协议: OpenVPN 功能:内建IP地址查询,启动即自动连接,全局KillSwitch,分设备KillSwitch,分设备绕过VPN,域名白名单与黑名单,服务器自动更新……</p></li><li><p>Sabai固件路由器 原生支持StrongVPN。</p></li></ul><h3>DD-WRT固件和Tomato固件路由器手工设置Kill-Switch教程</h3><ul><li><p>DD-WRT WireGuard 点击setup - > Tunnels,开启Kill Switch,然后Save- >Apply Settings,重启路由。</p></li><li><p>DD-WRT OpenVPN Administration - > Commands 输入命令行 iptables -I FORWARD -i br0 -o tun0 -j ACCEPT iptables -I FORWARD -i tun0 -o br -j ACCEPT iptables -I FORWARD -i br0 -o $(nvram get wan_iface) -j DROP iptables -I INPUT -i tun0 -j REJECT iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 点击Save Firewall然后重启。</p></li><li><p>Tomato Administration -> Scripts > Firewall 输入命令行 iptables -I FORWARD -i br0 -o tun0 -j ACCEPT iptables -I FORWARD -i tun0 -o br -j ACCEPT iptables -I FORWARD -i br0 -o $(nvram get wan_iface) -j DROP iptables -I INPUT -i tun0 -j REJECT iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 保存规则然后重启。</p></li></ul><h3>iOS如何避免苹果服务器绕过VPN</h3><p>连接VPN服务器; 打开飞行模式; 关闭飞行模式。</p><h3>Android如何避免VPN外流量泄漏</h3><p>原版目前无法解决,谷歌的回应是完全躺平的。别用原版Android了,用GrapheneOS之类可禁用连接情况检查的第三方Android吧。(悲)</p><h3>MacOS无原生客户端该如何手动安全连接OpenVPN</h3><p>下载自由软件Tunnelblick 。软件可设置KillSwitch,也可以预设多个VPN服务器的证书文件。</p><h3>Windows手动连接VPN该如何确保安全连线</h3><p>下载自由软件killswitch-windows 。连接VPN。此时以管理员身份运行killswitch-windows。VPN虚拟网卡一般情况下都是序号0。输入0,回车。完毕。</p><h3>Linux下自主设置OpenVPN KillSwitch,以Debian/Ubuntu为例</h3><p>输入命令行 sudo apt install ufw -y 安装UFW防火墙。</p><p>Ubuntu和分支系统可能预装了UFW。 sudo systemctl start ufw 启动UFW。</p><p>sudo ufw enable 激活UFW。 当系统问Proceed with operation (y|n)?输入Y,回车。 sudo ufw allow ssh 添加规则允许SSH连线。</p><p>sudo ufw default deny outgoing sudo ufw default deny incoming 此时默认规则是禁止对内对外的除了特殊规则的一切流量。</p><p>sudo head /etc/xxx.ovpn(具体的OpenVPN证书文件),取得服务器IP地址和端口号,以及UDP还是TCP。需要单IP地址做gateway的服务器。 sudo ufw allow out to xxx.xxx.xxx.xxx port xxxx proto udp/tcp 填写IP地址和端口,UCP或TCP,让他们成为允许流入流出的特殊规则。 sudo ufw allow out on tun0 from any to any</p><p>sudo ufw allow in on tun0 from any to any 允许OpenVPN的虚拟网卡tun0流量。 sudo mv /root/xxx.ovpn /etc/openvpn/xxx.conf cd /etc/openvpn</p><p>ls 移动证书文件到正确的文件夹位置。 sudo systemctl start [email protected] 开启OpenVPN服务组件。 sudo systemctl status [email protected] 验证一下OpenVPN是否开启了。 sudo systemctl enable [email protected] 自动连接到服务器。</p><p>完工。</p><h2>写在后面</h2><p>本文作者为No Name,投稿至<a href="https://t.me/AppDoDo">APPDO数字生活指南</a>。按作者意愿执行CC BY 4.0版权,仅做略微修改。</p><p>如果您有想购买的VPN正好在StackSocial售卖, 欢迎通过我的<a href="https://stacksocial.com/?rid=10758769">邀请链接</a>注册,你我各得10美元余额。</p>如果您有任何关于VPN的问题或者对本文的修改意见,欢迎到<a href="https://t.me/appdododo">Telegram群组</a>讨论 <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-66728214906511135952022-12-16T19:17:00.002+08:002023-01-01T06:20:15.098+08:00如何获取国际号码使用ChatGPT?<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p><a href="https://openai.com/blog/chatgpt/">ChatGPT</a> 是OpenAI开发的一个大型预训练语言模型。它是GPT-3模型的变体,GPT-3经过训练,可以在对话中生成类似人类的文本响应。ChatGPT 旨在用作聊天机器人,我们可以对其进行微调,以完成各种任务,如回答问题、提供信息或参与对话。与许多使用预定义的响应或规则生成文本的聊天机器人不同,ChatGPT经过了训练,可以根据接收到的输入生成响应,从而生成更自然、更多样化的响应。</p><p></p><p>注册 ChatGPT 却没有电话号码?<br /></p><p><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">最好的解决方案:</span><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"><a href="https://sms4sats.com/[email protected]">https://sms4sats.com/ </a>,采用</span><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">光速(LN)支付(每次 3000 sat,约$1) 无需注册,隐私100%,20分钟内收不到短信可以退款,无限次尝试其他号码。</span></p><p><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"> <img alt="" height="576" src="data:image/png;base64,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Myxi6Y1KtSXa6PbCQqqkGkY9ubpdaBqWppQqTSJJImtlNhfnV7ONejmdKdQblb31nVzTsCxLrZdS6UJTsxiz6tmd3dynW1QxU68WinWdijxrZNYvnL28mlMMizG9mUtlCrXPFiPrSkPRNE1rqeXM9vXzl65ulFumRQgxlHo6nS3nM5mKzgu81apuzc9eXUxWVa2eS5dUIvKkmd28fPHmTllpKdV8oW7xAmfUt25+cu7KdkUzmWXUS7l0ttIymGU0C9lii/Cc2dydn53dyuyubuUfYn+moaH+I0dmJEn60lcIwOOAaprW6TYAwGPkP/2n/3V+fsk0zS9/KDxqbrfr7//+fwsE/F/6yH/+51/+y7/8SlHUb6FVjwMhMPjK6TErtZOs6JHR6SF38ezbH24UvsKctafNa6+9+B/+w984nc5ONwTgoWC8HgAAHndms5zKK4OR7sEwEbjq8txSpoqBa4DvDuRRAAB43DG1tHT9ejHodcic3qgVCqUOrlkAAI8c8igAADz+mFYvJeulTjcDAL4RWO8JAAAAADoJeRQAAAAAOgl5FAAAAAA6CXkUAAAAADoJeRQA7sFx+LPQMTzPE/JQm1xSSumDNkMFaKOUe8jXEsDjAG88AHCPUCjI89giuzMikRDPP9SfZbfbZbPZEEnhgWRZ8njcHIeXBzwxkEcB4B7PPHMkEPAJgoCs823ied7pdD7//ElZlh/m8YOD/YlEr80m42mC+wiC0NUVGxsbEQQs6QhPDLxYAeAe09OTP/rR9+fmbuZyRdM0v3wje/ijUUq9Xs+BA8PPPXfiITcc7+vree21l9xu1+7unq7reJqgjef5cDh09OjM2Ngo8ig8QbB/PQDcr9Fobm3tlMtl07SQc74FlFK329nb2+P3ex++fldVW7u7e7lc3jAMPE3QxnFcIODr64s7nU70ncMTBHkUAAAAADoJ9aMAAAAA0EnIowAAAADQScijAAAAANBJyKMAAAAA0EnIowAAAADQScijAAAAANBJyKMAAAAA0EnIowAAAADQScijAAAAANBJyKMAAAAA0EnIowAAAADQScijAAAAANBJyKMAAAAA0EnIowAAAADQScijAAAAANBJyKMAAAAA0EnIowAAAADQScijAAAAANBJyKMAAAAA0EnIowAAAADQScijAAAAANBJyKMAAAAA0EnIowAAAADQScij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9BodHVBbCybTV2z27/8Ohw7B1BS8+CL867/elsgQBEGQjQLmowjyFXDOjdRzfn7+lVdeef/992tra/fs2eN0OuPx+Hvvvff666+fP3/e5/PZbLbq6uotW7Y0NjZaLBZMSeGtt+CHP4R//mf46U+/cJv/9b/g0CHYtAn+/u/h4MHbGByCIAiyUcDx9QjyZeSb6ePx+IkTJ9599922traf//znzz777M6dOwsLC81mcyaTmZmZWV5eHh4efuONN375y19++OGH8Xh8dR3qbUNPx8LhcDSZYau+WkvFY/GUym5jMJzDP/4jPPUUJBJw6BB8/jiMj8N//s8gitDbC+++C3/5CyajCIIg9yxYP4ogX4iRTWYymcHBwcuXL//xj3+02WxPP/10MBjs6ek5fvz4+fPnU6nUs88+29raWlZWlkqlurq63n///V//+tdms3nfvn2SJN3eWtLs+MevvX5h0bvp/icOtvmtEgEApk2c/+vH8/69D+0OOUzCbQhHVeE//Sf4l3/J/fPyZTh+HA4cyP3z+HE4dAjOn4cXX4RMBgTh1geEIAiCbGgwH0WQ65NPRs+ePfvaa6+Nj4/39/c//vjjRUVF58+fP3z4cDgcDoVCO3furKqqikQiyWSypqamsbGxtLT00KFDr7/+en19fUFBwW0NOjV27I9/eHeAuUdoXXOdu8wpUeCczV498dFAdc2ubSWOr+rHefMsL8P3vgfvvfcp8aWX4MAB+M1v4KWXwG6HF1+Ew4dveSQIgiDIHQLmowjyhXDOOzs7f/WrX4XD4YaGhlgs5nQ6OecnTpyYnZ198sknW1pa0un0uXPnurq6wuFwa2vrvn372traHnjggZdffrmvr8/v91N6rVeMlgqP9vWOzUVUagmU120q95kgOzsyNJdQs/HwfDhBza5QZV1lyKMIFECLjPf1DE1FMsQeKK2pCnlsCuHqePeFRWZjy7PzcVW0+qobGkJus0ABgMcGzx4dMLfc3xLpHu4bnm0utkny7a19HBqCJ56A7u7P6n/6Ezid8Mwz8H/+D7S13daQEARBkA0P5qMIcn0456lU6v333x8YGPjFL35RWVk5NDRECFFVNRqN7ty5s6Wlpb29/cKFC16vt6GhYWho6NixY1euXPnWt77l8Xjm5+fHx8c1TZMkKVcgS/We+PNbOwSUfgAAIABJREFUJweyskXI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" width="640" /></span></p><p><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"> </span></p><p><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">当然了,你需要一点比特币。。。。 </span> <br /></p><h3>ChatGPT演示版地址</h3><p>地址:<a href="http://chat.h2ai.cn/home" rel="noreferrer noopener" target="_blank">http://chat.h2ai.cn/home</a></p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-50051759074066605162022-12-16T16:23:00.006+08:002022-12-23T10:19:25.720+08:00从高亮到输出:如何用 Readwise 一站式优化你的阅读笔记流程? <span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><h2 class="ss-hId-1" id="ss-hId-1" style="text-align: justify;"><strong>来自: <a href="https://sspai.com/post/76574">https://sspai.com/post/76574</a> <br /></strong></h2><h2 class="ss-hId-1" id="ss-hId-1" style="text-align: justify;"><strong>痛点</strong></h2><p style="margin-left: 0px; text-align: justify;">想想看,平时在阅读上,你做了多少无用功?</p><p style="margin-left: 0px; text-align: justify;">勤勤恳恳阅读,认认真真做好高亮批注。你看到自己的思考结果与文章或者书中的文字融于一体,觉得特别安心。</p><p style="margin-left: 0px; text-align: justify;">然而,当你需要整理或者调用这些笔记的时候,才发现它们如同断线的珠子,散落在各种地方:</p><p style="margin-left: 0px; text-align: justify;">RSS 阅读内容在 feedspot 里; 微信公众号的高亮在 Instapaper 里;Epub 标记在 Marginnote 里;PDF 的高亮和批注在 LiquidText 里面…… 如果不加整理,它们就会在不同的应用中终老。</p><p style="margin-left: 0px; text-align: justify;">问题来了,该怎么整理这些散落的阅读笔记?</p><p style="margin-left: 0px; text-align: justify;">有的人并不觉得这是个棘手的事情。他们的作息时间,如同钟表一般规律。可以做到每天晚上专门花时间,雷打不动把这些内容整理出来,做好分类,放在 Evernote 或者 Obsidian 里。</p><p style="margin-left: 0px; text-align: justify;">但是,这种方法,对于懒人显然不友好。至少我自己,就笃定无法日复一日坚持下去。即便我希望能持续一周这样操作,恐怕都得专门雇个人在旁边监督自己。</p><p style="margin-left: 0px; text-align: justify;">幸好,技术的进步使我们不用活得那么悲摧。有一些工具可以帮助我们汇集各种资料,尤其是帮你保管阅读记录和高亮、批注。更好的消息,是这些工具有很多,例如 Readwise, Matter, Diigo, Cubox 和简悦(Simpread)等。</p><p style="margin-left: 0px; text-align: justify;">本文我就以自己常用的 Readwise 为例,为你介绍如何自动化汇集整理和利用笔记。希望这些经验也能够帮到你,早日摆脱手动整理阅读笔记的困扰。</p><h2 class="ss-hId-2" id="ss-hId-2" style="text-align: justify;"><strong>Readwise</strong></h2><p style="margin-left: 0px; text-align: justify;">我是 2020 年 4 月开始使用 Readwise 的。7 天试用期过后,我发邮件找 Readwise 官方申请了个教育优惠,就开始使用了。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="1" data-original="https://cdn.sspai.com/2022/11/03/article/0ac3a8fe143ce5720c7b0eee8df400f1" src="https://cdn.sspai.com/2022/11/03/article/0ac3a8fe143ce5720c7b0eee8df400f1?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">Readwise 的特点,是支持非常广泛的信息输入来源,例如我这里已经连接的来源包括 Kindle, Instapaper, Medium, Airr, Twitter, Apple Books 等等。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="2" data-original="https://cdn.sspai.com/2022/11/03/article/d5b8b96995e79ab2585c8fa4bcc2e625" src="https://cdn.sspai.com/2022/11/03/article/d5b8b96995e79ab2585c8fa4bcc2e625?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">我在这些来源里面进行的操作,包括高亮、批注等,都会自动传输到 Readwise 里面,形成一则则的笔记。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="3" data-original="https://cdn.sspai.com/2022/11/03/article/961100bea58446adca60d8117bbf4a66" src="https://cdn.sspai.com/2022/11/03/article/961100bea58446adca60d8117bbf4a66?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">每一则笔记上,都有对应的高亮数量,提示你在阅读这份材料的时候,迸发出多少灵感与问题。</p><p style="margin-left: 0px; text-align: justify;">另外,还有一些信息来源,虽然不能自动同步,也可以通过外部导入的形式,纳入到 Readwise 的内容库。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="4" data-original="https://cdn.sspai.com/2022/11/03/article/8b210da8330de8f3b1fabe8eb040438c" src="https://cdn.sspai.com/2022/11/03/article/8b210da8330de8f3b1fabe8eb040438c?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">这些内容输入源,可能就已经把你看得眼花缭乱。但它们不是重点,大部分优秀的稍后读工具都支持多种来源,可是只把信息汇集起来是不够的。Readwise 的一大特色,是可以把汇总来的信息,即时同步到你的「第二大脑」(笔记管理或者知识管理应用)中。</p><p style="margin-left: 0px; text-align: justify;">下面,是 Readwise 支持的部分输出目标应用。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="5" data-original="https://cdn.sspai.com/2022/11/03/article/55c5269f7e8d25aa3801f186058777a5" src="https://cdn.sspai.com/2022/11/03/article/55c5269f7e8d25aa3801f186058777a5?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">可以看到,你耳熟能详的 Roam Research, Notion, Logseq 和 Obsidian 等,都在这个列表中。</p><p style="margin-left: 0px; text-align: justify;">这个列表并不全。因为还有部分工具,直接通过 API 调用,内置了跟 Readwise 的连接。这些工具,包括 <a href="https://sspai.com/post/71558" rel="noopener noreferrer" target="_blank">我给你介绍过的 Heptabase</a> ,以及 Napkin 等等。</p><p style="margin-left: 0px; text-align: justify;">Readwise 丰富的输入输出渠道支持,构建了一个中转站,把你各种信息源和第二大脑工具进行了排列组合,并且交互链接。</p><p style="margin-left: 0px; text-align: justify;">你可以在 Roam Research 里面调用点赞过的 Twitter 内容,在 Notion 里引用你在 Kindle 看到的金句,或者把 Instapaper 读公众号文章时的感悟,整合在 Logseq 大纲里。</p><p style="margin-left: 0px; text-align: justify;">Readwise 还支持全部笔记的导出,你可以选择 csv 和 Markdown 格式。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="6" data-original="https://cdn.sspai.com/2022/11/03/article/34c10f65c2d035939a614efc9d829730" src="https://cdn.sspai.com/2022/11/03/article/34c10f65c2d035939a614efc9d829730?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">我在 <a href="https://www.bilibili.com/video/BV1jW4y1J7Bv/" rel="noopener noreferrer" target="_blank">《差生文具多》那期直播的答疑环节中说过</a>, 一款工具能拥有 Markdown 的导出方式,总能更让人安心。</p> <p> </p><p style="margin-left: 0px; text-align: justify;">当然,我并不是说,Readwise 只能当成阅读来源和笔记工具的沟通渠道来使用。作为笔记汇总应用,每天的回顾功能必不可少。 Readwise 默认每天帮你回顾 3 条内容。你也可以按照原始链接,跳转回对应的应用,去参考上下文。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="7" data-original="https://cdn.sspai.com/2022/11/03/article/d1b801c65ed37aef8e2285ee0d6b8b79" src="https://cdn.sspai.com/2022/11/03/article/d1b801c65ed37aef8e2285ee0d6b8b79?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">尽管已经订阅 Readwise 两年半的时间,按时付费,但我之前对这款工具并没有什么强烈感知。因为自己的阅读、加工过程,都是在其他工具里完成的。Readwise 只是默默帮助我把各种工具串联起来而已。</p><p style="margin-left: 0px; text-align: justify;">但是,这种情况在上个月发生了改观。因为我看到了 <a href="https://www.bilibili.com/video/BV1ie4y1m7xQ?share_source=copy_web" rel="noopener noreferrer" target="_blank">吕立青分享的 Readwise Reader 介绍视频</a>。</p> <p> </p><h2 class="ss-hId-3" id="ss-hId-3" style="text-align: justify;"><strong>Reader</strong></h2><p style="margin-left: 0px; text-align: justify;">Readwise 的自家阅读器应用 Reader 目前还在测试阶段。其实我从订阅邮件里,早就听说了这个事儿。但是在我的印象里,不同类型的信息来源,原本就是应该用不同的应用来阅读的。所以也没有感到什么强烈需求。不过立青既然专门做视频推荐,那我就不妨申请一下呗。</p><p style="margin-left: 0px; text-align: justify;">于是,看立青视频之前,我到 Readwise 官网申请了 Reader 试用。人家让我排队等着。我想等着就等着吧,没太当回事儿。</p><p style="margin-left: 0px; text-align: justify;">看完视频之后,我立即就不淡定了。因为光是看立青的讲解,我就立即发现了 Reader 可能给我的阅读笔记流程带来的显著变化,<a href="https://t.zsxq.com/07u7HiKL8" rel="noopener noreferrer" target="_blank">赶紧在知识星球里做了分享</a>:</p><ul><li style="text-align: justify;">终于可以让我愉快地阅读 Epub 文件了。之前在 MarginNote 里面阅读 Epub 的体验不好;</li><li style="text-align: justify;">邮件和推特信息流(Thread)的展示非常漂亮,内容也很全面(包括了引用的 Twitter);</li><li style="text-align: justify;">阅读的时候,可以使用快捷键来快速高亮和笔记,手指不需要移开去找鼠标;</li></ul><p style="margin-left: 0px; text-align: justify;">一款应用,给别人介绍完了,自己却还没机会上手。想想我这个 Readwise 老用户居然还得排队等试用名额,简直没有道理。我心有不甘,立即给 Readwise 官方发了信,然后不出意料,很快收到了试用批准。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="8" data-original="https://cdn.sspai.com/2022/11/03/article/45f51d6fd41d8908d5d25ee37fa0bf45" src="https://cdn.sspai.com/2022/11/03/article/45f51d6fd41d8908d5d25ee37fa0bf45?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">这下,我就能给你实际展示一下 Reader 的特性了。</p><p style="margin-left: 0px; text-align: justify;">首先,信息汇聚体现在这个 Inbox 上面。可以看到,各种来源的内容,都展现在统一的界面里。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="9" data-original="https://cdn.sspai.com/2022/11/03/article/1f9050cc47cd6fad7d9afd599b100a77" src="https://cdn.sspai.com/2022/11/03/article/1f9050cc47cd6fad7d9afd599b100a77?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">内容展现按照时间排序,你可以对近期采集的信息一目了然。</p><p style="margin-left: 0px; text-align: justify;">点开某个条目之后,是统一风格的阅读界面(可以选择暗色主题),其中图片、链接一应俱全,就连动图也可以正常显示。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="10" data-original="https://cdn.sspai.com/2022/11/03/article/54cadc5bf689974bbd6477c01e637954" src="https://cdn.sspai.com/2022/11/03/article/54cadc5bf689974bbd6477c01e637954?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">假如需要具体到不同信息来源里翻找,你可以在左侧边栏分别点选对应的图标。例如这是 RSS 界面。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="11" data-original="https://cdn.sspai.com/2022/11/03/article/74534aba747ec28e2fe8a531bd386f00" src="https://cdn.sspai.com/2022/11/03/article/74534aba747ec28e2fe8a531bd386f00?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">可以看到我订阅的 RSS 不多,其中之一是少数派。最新推送到首页的文章,都会立即展现在这里。</p><p style="margin-left: 0px; text-align: justify;">有的时候邮件里包含了重要信息,但是很长,你可能需要稍后认真阅读。把它转发到 Readwise 给你分配的个人私有邮箱地址就行了。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="12" data-original="https://cdn.sspai.com/2022/11/03/article/1b73a9d43f34e68bc82765a010716c6b" src="https://cdn.sspai.com/2022/11/03/article/1b73a9d43f34e68bc82765a010716c6b?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">至于在网页里面浏览和标注 PDF 文件,一点儿也不违和。这是一本电子书的显示效果。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="13" data-original="https://cdn.sspai.com/2022/11/03/article/be59279950e35d6b06606c6995d29166" src="https://cdn.sspai.com/2022/11/03/article/be59279950e35d6b06606c6995d29166?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">尤其令我惊喜的,是 Reader 对于 Epub 格式的支持。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="14" data-original="https://cdn.sspai.com/2022/11/03/article/0a8bd50928150495910c41cccc3e4386" src="https://cdn.sspai.com/2022/11/03/article/0a8bd50928150495910c41cccc3e4386?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">你可以随时随地在 Reader 里面查看电子书。里面完整保存了阅读的记录和批注情况。我再也不必在多个客户端之间同步原始文件和笔记了。某些其他客户端同步的时候总会遇到奇奇怪怪的问题,导致出现冲突得手动处理,甚至还可能丢失掉自己的思考和记录。Reader 上阅读 Epub ,完全不用为这些琐事操心。</p><p style="margin-left: 0px; text-align: justify;">你可以在这一个网页里面以统一的操作方式(甚至支持全键盘快捷键)完成对各种不同类型信息的处理。更妙的是,所有在 Reader 里面做的批注,都保存有原文精确位置,而且支持一键跳转。管它是网页、PDF,还是 Epub…… 你再也不用操心把原始文档备份存储在哪里,用哪一种细粒度阅读器来支持精确内容定位跳转了。</p><p style="margin-left: 0px; text-align: justify;">而且,不要忘了,Reader 是个在线应用。这意味着所有存下来的笔记位置链接,都是网址。你的所有记录,再也不会被局限在某个平台和应用上了。理论上讲,你可以在任何一台能联网的设备上登录 Readwise 帐号,然后用笔记链接直接查看原始资料上下文。</p><h2 class="ss-hId-4" id="ss-hId-4" style="text-align: justify;"><strong>调用</strong></h2><p style="margin-left: 0px; text-align: justify;">有了链接和一站式阅读批注,咱们讲讲阅读笔记的调用。</p><p style="margin-left: 0px; text-align: justify;">前面提到了,Readwise 支持同步到多种不同的笔记管理工具。这里,我着重演示一下它和 Heptabase 的配合操作。</p><p style="margin-left: 0px; text-align: justify;">要把 Heptabase 和 Readwise 连接非常简单。在设置里面选择 connection 菜单栏,按照下图蓝色链接,到 Readwise 获取一个访问码(Token),贴进来就行。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="15" data-original="https://cdn.sspai.com/2022/11/03/article/2fcf53064290806bfe01956236ace193" src="https://cdn.sspai.com/2022/11/03/article/2fcf53064290806bfe01956236ace193?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">其他工具和 Readwise 同步,基本上都是一股脑把全部 Readwise 内容都纳入到知识库里。这样有好处,就是一视同仁,阅读笔记高亮和普通笔记都在手里,便于操作。但是也有问题,就是比较混乱,难于管理和有效应用笔记。例如大部分高亮片段其实都是别人的话语,一旦不分青红皂白都弄进来,使用的时候,如果不加区分,很容易造成「非故意剽窃」,这样就不好了。</p><p style="margin-left: 0px; text-align: justify;">Heptabase 聪明的地方,是它把 Readwise 里面的高亮和批注内容同步了进来,但是并不出现在卡片库中,而是先保持对用户透明。使得你可以确信,所有的卡片库里,都是自己的内容,可以放心大胆使用。</p><p style="margin-left: 0px; text-align: justify;">而当你要利用 Readwise 笔记时,可以在一个白板中点击右上方这个「三本书」按钮。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="16" data-original="https://cdn.sspai.com/2022/11/03/article/c0621d7e46b52847254a352815fb234c" src="https://cdn.sspai.com/2022/11/03/article/c0621d7e46b52847254a352815fb234c?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">你会立即看到全部 Readwise 笔记都出现在侧边栏。但是这样显然带来了信息过载。</p><p style="margin-left: 0px; text-align: justify;">不要紧,你输入某个关键词,就能过滤出来所有与之相关的 Readwise 内容。举例来说,我这里就输入 "readwise" 。</p><p style="margin-left: 0px; text-align: justify;">尽管只有一项内容,但是其中高亮条数有 62 条之多。可见我在阅读的时候受到了不少触动。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="17" data-original="https://cdn.sspai.com/2022/11/03/article/a80ec210a0d3bd03f193ed344f5a80ce" src="https://cdn.sspai.com/2022/11/03/article/a80ec210a0d3bd03f193ed344f5a80ce?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">点击这个条目,你可以看到其中的高亮和标注列表。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="18" data-original="https://cdn.sspai.com/2022/11/03/article/236565d4c58a30061ff0b5bcea7d1a70" src="https://cdn.sspai.com/2022/11/03/article/236565d4c58a30061ff0b5bcea7d1a70?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">这里的每一条标注或者笔记,都可以轻易加入到当前白板。点击笔记右侧的拷贝按钮,然后在白板的卡片中粘贴即可。</p><figure class="image ss-img-wrapper"><img alt="" class="lazyLoadEnd" data-index="19" data-original="https://cdn.sspai.com/2022/11/03/article/7db052330c18057dc613de2993d17fe7" src="https://cdn.sspai.com/2022/11/03/article/7db052330c18057dc613de2993d17fe7?imageView2/2/w/1120/q/90/interlace/1/ignore-error/1" /></figure><p style="margin-left: 0px; text-align: justify;">从上图中可以看到,加入的内容里都包含了原始链接,可以直接跳转到 Readwise 查看。</p><p style="margin-left: 0px; text-align: justify;">如此一来,你在 Heptabase 中调用 Readwise 阅读笔记,并且进行修改调整,甚至跳转到原始上下文继续探究,都可以一气呵成。</p><p style="margin-left: 0px; text-align: justify;">更厉害的是,Heptabase 和 Readwise 之间的同步,几乎是实时的。这边你在 Reader 里面一高亮,Heptabase 那边就已完成同步,随时等候你的召唤。操作非常顺滑,毫无滞碍。</p><h2 class="ss-hId-5" id="ss-hId-5" style="text-align: justify;"><strong>小结</strong></h2><p style="margin-left: 0px; text-align: justify;">本文我为你演示了自己使用 Readwise Reader + Heptabase 处理阅读笔记的流程。因为 Readwise 支持多种笔记工具的同步,所以你也可以采用 Obsidian 或者 Logseq 等免费工具进行替换。</p><p style="margin-left: 0px; text-align: justify;">如果你是学生,注意 Readwise 有学生优惠的申请通道。给下面蓝色显示的邮箱发信就可以了。</p> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-91145106408499368662022-12-14T11:25:00.004+08:002022-12-22T19:59:55.844+08:00想到哪,写到哪——突破线性思维的写作利器 Milanote<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p class="wp-caption-text">来自:https://cn.gijn.org/2020/08/28/milanote/<br /></p><p class="wp-caption-text">Milanote 是一款突破线性思维的写作利器,它可以在任何平台使用。</p><p>在和编辑部同事讨论选题时,常常会用到一个工具——白板。故事的不同切入角度、不同素材间的逻辑顺序、受访对象之间的关系等等,都可以通过在白板上的涂写,一目了然的呈现在面前。白板上的涂写体验和在笔记本或笔记型应用中很不同:你不需要考虑先写什么后写什么,想到什么就可以写上去,只要把它摆在了对的位置上,逻辑顺序一样清晰明了;同时,写上去的也不限于是文字,大可以是箭头、圆圈,甚至于是图像等视觉元素。</p><p>但当完成采访,打开文档开始写稿时,盯着闪动的光标,我每次总是会有些无从下手。文章开头总是最难写的,但偏偏在这个空白的文档中,好像不写开头就很很难继续写下去。虽然我脑海里面浮现的是整篇文章的提纲,但在我面前的光标却无时不刻不在提醒你线性的书写顺序——虽然我也可以按下无数回车,把开头给留白,但那种感觉总是有点奇怪,写了一会觉得不对劲,还是想返回开头重新来过。</p><p>我尝试过许多笔记型应用,从传统一点的 Word、Evernote 到新派一点的 Notion、熊掌记,但除了外观和功能上的些许不同,他们在底层书写逻辑方面是一脉相承的线性思维——光标随着你书写的内容不断向后推,这也就等于在不停提示:你要先写在前面的内容,再写在后面的内容。</p><p>虽然说这与我们从小的写作训练并无不同,但我总觉得这种方法不太适合用来写长报道。为什么就没有笔记型应用能够打破传统的线性思维,模拟白板的书写逻辑呢?经过一番搜索,我终于发现了 <a href="https://milanote.com/" rel="noopener noreferrer" target="_blank">Milanote</a> 这款应用。</p><div class="wp-caption module image aligncenter" id="attachment_99158" style="max-width: 771px;"><img alt="" class="size-full wp-image-99158" height="560" src="https://cn.gijn.org/wp-content/uploads//sites/54/2020/08/6ddc43ea7616010267e6439e1486006747b54005_outline-1-1170x850.png" width="771" /><p class="wp-caption-text">在 Milanote 上进行写作,有点感觉像在白板上进行创作。</p></div><p>Milanote 和一般笔记应用最大的不同,就是在底层思维上。一般笔记应用的底层思维是线性的,而 Milanote 的底层思维是发散的,我觉得它也更符合我们书写的思维方式。基于这个底层思维,Milanote 的产品设计也非常具有颠覆性:一般笔记型应用的最小单位是「文档」,而 Milanote 的最小单位是「块状元素」——它可以是任何东西,一个文本框、一张图、一个待办列表、一个箭头、一个文件等等;而传统笔记型应用通常通过文件夹来进行管理,Milanote 却通过看板(Board)来进行管理,相比于文件夹,它更加直观,一眼看过去的信息量也更大,和白板的体验非常类似。</p><p>在这样的白板上进行创作,我感觉非常自由。真正可以做到「想到哪、写到哪」,把容易写的、想要写的部分先写进文本块中,之后再通过拖拽的动作,对逻辑顺序进行排列组合,很容易就可以「拼凑」出一篇逻辑清晰的文章。</p><p>对于长篇故事/剧本的写作者来说,Milanote 也非常实用,可以先在看板上画出人物关系图谱,再把故事慢慢铺开,而不用时刻提醒自己人物/事件之间的逻辑关系。</p><div class="wp-caption module image aligncenter" id="attachment_99159" style="max-width: 771px;"><img alt="" class="size-full wp-image-99159" height="437" src="https://cn.gijn.org/wp-content/uploads//sites/54/2020/08/33-1170x663.jpg" width="771" /><p class="wp-caption-text">Milanote 也很适合用作项目管理/任务管理。</p></div><p>由于 Milanote 内置了待办事项的元素,所以它也很合适用来进行项目管理/任务管理。而因为有看板的设计,我觉得它比 Todoist 等任务管理应用更加直观和易用。</p><p>Milanote 是一款全平台应用,无论你是使用 Windows、macOS 或其他操作系统,都可以通过网页访问它。同时,它也提供了 iOS 和 Android 应用。费用方面,Milanote 提供了两种账户选项。第一种是免费的,你可以上传100个元素和上传10个文件;第二种是专业版,拥有无限的元素和文件上传配额。如果按年扣费,每月收费是 9.99 美元,如果按月扣费,每月收费是 12.5 美元。</p><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-49516442855803669692022-12-14T11:24:00.002+08:002022-12-17T18:16:42.496+08:00苹果推出对iCloud 个人数据备份端对端加密,中国市场待定<p><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> <span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">来自:推特综合 <br /></span></span></p><p> 苹果宣布从 iOS 16.2、iPadOS 16.2 和 macOS 13.1 开始,用户可选择启用“高级数据保护(Advanced Data Protection)” 功能,iCloud Backup、Photos、Notes 等都将使用端对端加密,这意味着如果你丢失了账号,苹果没有加密密钥帮助你恢复——用户需要通过设备密码、帐户恢复联系人或个人的恢复密钥去恢复账号。</p><p>用户可以在任何时候开启(或关闭)高级数据保护功能<span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">,允许用户使用</span><span class="css-901oao css-16my406 r-poiln3 r-b88u0q r-bcqeeo r-qvutc0">端</span><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">到</span><span class="css-901oao css-16my406 r-poiln3 r-b88u0q r-bcqeeo r-qvutc0">端</span><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">加密技术保护大部分</span><span class="css-901oao css-16my406 r-poiln3 r-b88u0q r-bcqeeo r-qvutc0">iCloud</span><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">数据。黑客即使成功入侵云端也无法解密数据。</span> </p><p></p><p><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">华尔街日报采访中,</span></span><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">FBI和司法部前高级官员Sumon Dantiki表示:“这一事态(苹果推行iCloud端对端加密)发展将在国内外引发质疑,包括中国政府是否能接受失去数据访问权。</span><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"> -- https://twitter.com/myfxtrader/status/1600665084354711557</span></span></p><p><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">iCloud支持端端加密(E2EE)数据将由目前14种大幅扩展至23种(仅剩Mail、Contacts、Calendars考虑数据互操作暂未支持);此外,Apple正式放弃推出CSAM检测功能。——没对比就没伤害,相比云盘扫描甚至系统内置“反诈中心”等业界常规,Apple最终选择了一条艰难但正确的道路,守住了隐私底线。</span></span></p><p>这一声明发布在英文版的支持文档上,中文版没有更新,暂时不清楚苹果是否向中国区用户提供该功能。<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"> </span></span><span style="opacity: 0; position: absolute; user-select: auto; white-space: pre-wrap;">https://twitter.com/FrankWenbin/status/1602852865797951488?s=20&t=bjgKKKlgvjty3gge_mvEuw</span></p><p><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"> </span></span> </p><div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-3331580163484190592022-12-14T10:52:00.005+08:002022-12-16T16:22:59.399+08:00 如何构建一个防污染DNS <span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><div class="post-content" itemprop="article text"> <div class="ui text container" id="post-content"> <p>来自:<a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/"> https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/ </a> <br /></p><p>DNS 污染,GFW 三板斧第一招,对付起来相对容易,直接将 GFW 伪造的 DNS 抢答包丢弃即可解决。</p> <hr class="docutils" /><p>tldr;</p><p>添加下如 iptables 规则后,然后将主机DNS指向墙外DNS(如8.8.8.8)(或本地自建递归DNS)即可。</p><div class="code"><pre class="code bash"><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_1381eaa664024a5982e1b3ac69fd2c2a-1" id="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-1" name="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-1"></a>iptables -t raw -A PREROUTING -m bpf --bytecode <span class="s1">'38,48 0 0 0,84 0 0 240,21 34 0 96,48 0 0 0,84 0 0 240,21 0 31 64,48 0 0 9,21 0 29 17,40 0 0 6,69 27 0 8191,177 0 0 0,72 0 0 0,21 0 24 53,40 0 0 2,37 22 0 128,72 0 0 12,21 0 20 1,72 0 0 14,21 0 18 1,72 0 0 16,21 0 16 0,72 0 0 18,21 0 14 1,72 0 0 4,20 0 0 8,12 0 0 0,7 0 0 0,64 0 0 0,21 0 8 268435456,177 0 0 0,72 0 0 4,20 0 0 4,12 0 0 0,7 0 0 0,64 0 0 0,21 0 1 0,6 0 0 65535,6 0 0 0'</span> -j DROP<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_1381eaa664024a5982e1b3ac69fd2c2a-2" id="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-2" name="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-2"></a>iptables -t raw -A PREROUTING -m bpf --bytecode <span class="s1">'27,48 0 0 0,84 0 0 240,21 23 0 96,48 0 0 0,84 0 0 240,21 0 20 64,48 0 0 9,21 0 18 17,40 0 0 6,69 16 0 8191,177 0 0 0,72 0 0 0,21 0 13 53,40 0 0 4,21 0 11 0,40 0 0 6,21 0 9 0,48 0 0 8,37 7 0 40,72 0 0 12,21 0 5 1,72 0 0 14,21 0 3 1,72 0 0 16,21 0 1 0,6 0 0 65535,6 0 0 0'</span> -j DROP<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_1381eaa664024a5982e1b3ac69fd2c2a-3" id="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-3" name="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-3"></a>iptables -t raw -A PREROUTING -p udp -m bpf --bytecode <span class="s1">'39,40 0 0 20,21 0 36 53,32 0 0 36,21 0 34 0,32 0 0 32,21 3 0 65537,21 0 31 65536,40 0 0 30,21 15 29 33152,40 0 0 30,84 0 0 65487,21 17 0 34176,40 0 0 24,7 0 0 0,64 0 0 4,21 5 0 3222011905,21 0 21 536936448,64 0 0 8,21 0 19 0,64 0 0 12,21 3 17 0,64 0 0 10,37 15 0 255,53 0 14 64,32 0 0 4,21 11 0 0,21 11 0 16384,84 0 0 65535,21 8 9 16384,40 0 0 6,21 0 7 0,40 0 0 24,7 0 0 0,64 0 0 6,21 0 3 65537,64 0 0 10,21 0 1 60,6 0 0 1,6 0 0 0'</span> -j DROP<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_1381eaa664024a5982e1b3ac69fd2c2a-4" id="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-4" name="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-4"></a>ip6tables -t raw -A PREROUTING -m bpf --bytecode <span class="s1">'29,48 0 0 0,84 0 0 240,21 0 25 96,48 0 0 6,21 0 23 17,40 0 0 40,21 0 21 53,40 0 0 4,37 19 0 128,40 0 0 52,21 0 17 1,40 0 0 54,21 0 15 1,40 0 0 56,21 0 13 0,40 0 0 58,21 0 11 1,40 0 0 4,20 0 0 8,7 0 0 1,64 0 0 40,21 0 6 268435456,40 0 0 4,20 0 0 4,7 0 0 6,64 0 0 40,21 0 1 0,6 0 0 65535,6 0 0 0'</span> -j DROP<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_1381eaa664024a5982e1b3ac69fd2c2a-5" id="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-5" name="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-5"></a>ip6tables -t raw -A PREROUTING -m bpf --bytecode <span class="s1">'19,48 0 0 0,84 0 0 240,21 0 15 96,48 0 0 6,21 0 13 17,40 0 0 40,21 0 11 53,32 0 0 0,21 0 9 1610612736,40 0 0 4,37 7 0 128,40 0 0 52,21 0 5 1,40 0 0 54,21 0 3 1,40 0 0 56,21 0 1 0,6 0 0 65535,6 0 0 0'</span> -j DROP<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_1381eaa664024a5982e1b3ac69fd2c2a-6" id="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-6" name="rest_code_1381eaa664024a5982e1b3ac69fd2c2a-6"></a>ip6tables -t raw -A PREROUTING -p udp -m bpf --bytecode <span class="s1">'23,40 0 0 40,21 0 20 53,32 0 0 52,21 0 18 65537,32 0 0 56,21 0 16 0,40 0 0 0,84 0 0 65520,21 0 13 24576,40 0 0 44,7 0 0 0,64 0 0 24,21 5 0 3222011905,21 0 8 536936448,64 0 0 28,21 0 6 0,64 0 0 32,21 3 4 0,64 0 0 30,37 2 0 255,53 0 1 64,6 0 0 1,6 0 0 0'</span> -j DROP<br /></pre></div><hr class="docutils" /><p>上述规则六条中的两条为 <a class="reference external" href="https://twitter.com/gNodeB" rel="noopener noreferrer" target="_blank">lccd</a> 的<a class="reference external" href="https://twitter.com/gNodeB/status/1443975021840551941" rel="noopener noreferrer" target="_blank">成果</a>,字节码所对应的原始汇编可在此 <a class="reference external" href="https://gist.github.com/llccd/1d19a5d859700366c8941eca5b0fadd6" rel="noopener noreferrer" target="_blank">gist</a> 查看。</p><p>剩余四条字节码由以下 <a class="reference external" href="https://www.tcpdump.org/manpages/pcap-filter.7.html" rel="noopener noreferrer" target="_blank">pcap-filter</a> 规则使用 <a class="reference external" href="https://man.archlinux.org/man/nfbpf_compile.8" rel="noopener noreferrer" target="_blank">nfbpf_compile</a> 编译而来。</p><p>ipv4</p><div class="code"><pre class="code text"><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_3c7d6607d5264d80b86504c2ef686e66-1" id="rest_code_3c7d6607d5264d80b86504c2ef686e66-1" name="rest_code_3c7d6607d5264d80b86504c2ef686e66-1"></a>udp src port 53 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_3c7d6607d5264d80b86504c2ef686e66-2" id="rest_code_3c7d6607d5264d80b86504c2ef686e66-2" name="rest_code_3c7d6607d5264d80b86504c2ef686e66-2"></a>ip[4:2] = 0x0000 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_3c7d6607d5264d80b86504c2ef686e66-3" id="rest_code_3c7d6607d5264d80b86504c2ef686e66-3" name="rest_code_3c7d6607d5264d80b86504c2ef686e66-3"></a>ip[6:2] = 0x0000 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_3c7d6607d5264d80b86504c2ef686e66-4" id="rest_code_3c7d6607d5264d80b86504c2ef686e66-4" name="rest_code_3c7d6607d5264d80b86504c2ef686e66-4"></a>ip[8] <= 40 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_3c7d6607d5264d80b86504c2ef686e66-5" id="rest_code_3c7d6607d5264d80b86504c2ef686e66-5" name="rest_code_3c7d6607d5264d80b86504c2ef686e66-5"></a>udp[12:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_3c7d6607d5264d80b86504c2ef686e66-6" id="rest_code_3c7d6607d5264d80b86504c2ef686e66-6" name="rest_code_3c7d6607d5264d80b86504c2ef686e66-6"></a>udp[14:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_3c7d6607d5264d80b86504c2ef686e66-7" id="rest_code_3c7d6607d5264d80b86504c2ef686e66-7" name="rest_code_3c7d6607d5264d80b86504c2ef686e66-7"></a>udp[16:2] = 0x0000<br /></pre></div><div class="code"><pre class="code text"><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_d7c9ba429c994bd0ae8223d13921cd1b-1" id="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-1" name="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-1"></a>udp src port 53 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_d7c9ba429c994bd0ae8223d13921cd1b-2" id="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-2" name="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-2"></a>ip[2:2] <= 128 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_d7c9ba429c994bd0ae8223d13921cd1b-3" id="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-3" name="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-3"></a>udp[12:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_d7c9ba429c994bd0ae8223d13921cd1b-4" id="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-4" name="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-4"></a>udp[14:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_d7c9ba429c994bd0ae8223d13921cd1b-5" id="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-5" name="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-5"></a>udp[16:2] = 0x0000 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_d7c9ba429c994bd0ae8223d13921cd1b-6" id="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-6" name="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-6"></a>udp[18:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_d7c9ba429c994bd0ae8223d13921cd1b-7" id="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-7" name="rest_code_d7c9ba429c994bd0ae8223d13921cd1b-7"></a>udp[(udp[4:2] - 8):4] = 0x10000000 and udp[(udp[4:2] - 4):4] = 0x00000000<br /></pre></div><p>ipv6</p><div class="code"><pre class="code text"><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-1" id="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-1" name="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-1"></a>ip6[6] = 0x11 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-2" id="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-2" name="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-2"></a>ip6[40:2] = 0x0035 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-3" id="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-3" name="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-3"></a>ip6[0:4] = 0x60000000 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-4" id="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-4" name="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-4"></a>ip6[4:2] <= 128 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-5" id="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-5" name="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-5"></a>ip6[52:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-6" id="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-6" name="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-6"></a>ip6[54:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-7" id="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-7" name="rest_code_aee4e3fcf8964a64bb5c68d014ebb19a-7"></a>ip6[56:2] = 0x0000<br /></pre></div><div class="code"><pre class="code text"><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-1" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-1" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-1"></a>ip6[6] = 0x11 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-2" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-2" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-2"></a>ip6[40:2] = 0x0035 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-3" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-3" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-3"></a>ip6[4:2] <= 128 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-4" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-4" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-4"></a>ip6[52:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-5" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-5" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-5"></a>ip6[54:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-6" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-6" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-6"></a>ip6[56:2] = 0x0000 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-7" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-7" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-7"></a>ip6[58:2] = 0x0001 and<br /><a href="https://blog.bgme.me/posts/how-to-create-an-anti-pollution-dns/#rest_code_9220f21e78a14a5a8807c82f63d50b81-8" id="rest_code_9220f21e78a14a5a8807c82f63d50b81-8" name="rest_code_9220f21e78a14a5a8807c82f63d50b81-8"></a>ip6[40 + (ip6[4:2] - 8): 4] = 0x10000000 and ip6[40 + (ip6[4:2] - 4): 4] = 0x00000000<br /></pre></div> </div> </div><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-11081445479697791992022-12-01T11:03:00.001+08:002022-12-01T11:03:21.254+08:00网页变灰恢复彩色的方法<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p>来自: <a href="https://moreless.medium.com/%E7%BD%91%E9%A1%B5%E5%8F%98%E7%81%B0%E6%81%A2%E5%A4%8D%E5%BD%A9%E8%89%B2%E7%9A%84%E6%96%B9%E6%B3%95-2ea2bfb07765" target="_blank">https://moreless.medium.com/%E7%BD%91%E9%A1%B5%E5%8F%98%E7%81%B0%E6%81%A2%E5%A4%8D%E5%BD%A9%E8%89%B2%E7%9A%84%E6%96%B9%E6%B3%95-2ea2bfb07765</a> </p><p> </p><p>一到什么纪念日,这帮人就不管别人愿意不愿意,强行把网站改成灰色。搞得别人也不开心。完全就是强奸民意。</p><p>但是网页改成灰色,或者恢复彩色,就一分钟的事,都非常容易操作。</p><p>比如这个网页ccav.com,已经变灰了。</p><figure><p><img alt="1*k1uZ6n8szbtMhpq7Yn2i3A.png" src="https://miro.medium.com/max/700/1*k1uZ6n8szbtMhpq7Yn2i3A.png" /></p></figure><p>这时候,如果使用chrome浏览器,只要右键选Inspect,或者按F12,就会调出浏览器的调试工具。</p><figure><p><img alt="1*l2vfvAJgcuay-tm8p1RpIg.png" src="https://miro.medium.com/max/512/1*l2vfvAJgcuay-tm8p1RpIg.png" /></p></figure><figure><p><img alt="1*Cgp948wO22vBjeHNULkaNA.png" src="https://miro.medium.com/max/700/1*Cgp948wO22vBjeHNULkaNA.png" /></p></figure><p>在第一个Tab elements里面直接编辑网页即可。</p><p>搜索关键字gray,会出来一段CSS样式。一般就在页面最顶部。</p><figure><p><img alt="1*-LXyCwiYVAxh6PPrh_Ax5A.png" src="https://miro.medium.com/max/700/1*-LXyCwiYVAxh6PPrh_Ax5A.png" /></p></figure><pre><style type="text/css"><br />html{<br />-webkit-filter:grayscale(100%);<br />-moz-filter:grayscale(100%);<br />-ms-filter:grayscale(100%);<br />-o-filter:grayscale(100%);<br />filter:grayscale(100%);<br />filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)<br />}<br />*{<br />-moz-filter: grayscale(100%);<br />-ms-filter: grayscale(100%);<br />-o-filter: grayscale(100%);<br />filter: gray;<br />}</style></pre><p>右键,选择edit as html,将这段整个删除即可。页面马上恢复彩色。</p><figure><p><img alt="1*bLP0Bl_8lDbw5rXhol2aRA.png" src="https://miro.medium.com/max/700/1*bLP0Bl_8lDbw5rXhol2aRA.png" /></p></figure><p>这个方法有一个不足之处就是,一旦页面刷新之后,就又变成灰色了。这时只要在chrome的store里下载一个permanent inspect element扩展,将网页修改保存即可。这样就可以一直保持彩色了。</p><figure><p><img alt="1*yyM31IQK-KJlKBxm8DVeJw.png" src="https://miro.medium.com/max/700/1*yyM31IQK-KJlKBxm8DVeJw.png" /></p></figure><figure><p><img alt="1*i9aoOS2dXlXu9uGD5JzrIQ.png" src="https://miro.medium.com/max/430/1*i9aoOS2dXlXu9uGD5JzrIQ.png" /></p></figure><p>要是页面显示出了问题,reset即可恢复原样。</p><p>京东的页面更加简单,顶部第一行html,</p><figure><p><img alt="1*v9Xc-l010NH0AQyaWmBSKA.png" src="https://miro.medium.com/max/700/1*v9Xc-l010NH0AQyaWmBSKA.png" /></p></figure><pre><html class="root61 o2_wide csstransitions cssanimations o2_webkit o2_chrome o2_latest o2_gray"><head><script type="text/javascript"></pre><p>删除o2_gray即可。改成:</p><pre><html class="root61 o2_wide csstransitions cssanimations o2_webkit o2_chrome o2_latest"><head><script type="text/javascript"></pre><p>秒变彩色。</p><figure><p><img alt="1*xIagzz_wAy0Hfq70o5lpCQ.png" src="https://miro.medium.com/max/700/1*xIagzz_wAy0Hfq70o5lpCQ.png" /></p></figure><p><a href="https://moreless.medium.com/%E4%BA%BA%E7%B1%BB%E4%B8%8E%E5%BC%BA%E6%9D%83%E7%9A%84%E6%96%97%E4%BA%89-%E5%B0%B1%E6%98%AF%E8%AE%B0%E5%BF%86%E4%B8%8E%E9%81%97%E5%BF%98%E7%9A%84%E6%96%97%E4%BA%89-6596bcc09733?source=post_page-----2ea2bfb07765----0----------------------------" rel="noreferrer noopener" target="_blank"></a></p><p><a href="https://moreless.medium.com/%E4%B8%87%E5%9C%A3%E8%8A%82%E5%8F%91%E5%90%AB%E6%AF%92%E5%93%81%E7%9A%84%E7%B3%96-%E5%8F%88%E6%9C%89%E4%BA%86%E6%96%B0%E7%9A%84%E6%8C%87%E5%90%91-203249a76728?source=post_page-----2ea2bfb07765----4----------------------------" rel="noreferrer noopener" target="_blank"></a></p><a href="https://moreless.medium.com/%E4%B8%87%E5%9C%A3%E8%8A%82%E5%8F%91%E5%90%AB%E6%AF%92%E5%93%81%E7%9A%84%E7%B3%96-%E5%8F%88%E6%9C%89%E4%BA%86%E6%96%B0%E7%9A%84%E6%8C%87%E5%90%91-203249a76728?source=post_page-----2ea2bfb07765----4----------------------------" rel="noreferrer noopener" target="_blank"></a><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-64828217623030385182022-12-01T11:01:00.001+08:002022-12-01T11:03:30.955+08:00Telegram的隐私保护指南,和信息搜索工具<p>我们一直都不推荐 Telegram 作为敏感通信工具,它的唯一优点只有频道。但也因此,它汇聚了全球消息来源,尤其是对于突发事件来说,于是吸引了极大的人气。</p><p><span>我们此前介绍了 Telegram 用户被去匿名化的方法,见《</span><a href="https://www.patreon.com/posts/cong-telegram-lu-72200795" rel="">从 Telegram 揭露您的身份信息可能吗? — — 有中国朋友提起了这个问题。答案是:可能</a><span>》;本文将首先简单梳理 Telegram 的隐私安全问题,如果您必需使用它,至少应该注意这些事。</span></p><h3 class="header-with-anchor-widget">Telegram存在的隐私问题包括:<div class="header-anchor-widget" id="§telegram存在的隐私问题包括"><div class="header-anchor-widget-button-container"><div class="header-anchor-widget-button" href="https://iyouport.substack.com/i/87508422/telegram存在的隐私问题包括"><svg class="header-anchor-widget-icon" fill="none" height="20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewbox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></h3><p><span>1、电话号码和其他与Telegram账户相关的数据都会被定期收集和储存,这对SIM卡实名的国家用户来说相当不方便(</span><strong>所有强制手机号码注册或验证的应用和服务都不值得推荐</strong><span>)。此外,当您的联系人之一加入该应用时,您就会收到通知(其他所有在Telegram上并且联系人中有新加入者的人也都会收到通知)。</span></p><p><span>2、标准的 Telegram 聊天</span><strong>并不是</strong><span>端对端加密的,要使用加密您必需手动选择。telegram 群组也不加密,甚至可以通过搜索引擎找到。</span></p><p><span>3、</span><strong>Telegram 只对传输中的数据进行加密(在服务器和终端用户之间),但它不对静态数据进行加密</strong><span> — — 已经发送的信息未加密地存储在Telegram的云服务器上,理论上Telegram的员工可以随意访问所有这些信息,或者在数据泄露的情况下被无意中作为纯文本发布。这也是此前</span><a href="https://t.me/iyouport/11884" rel="">那位俄罗斯姑娘被抓住</a><span>的可能原因之一。</span></p><p><span>4、</span><strong>如上,Telegram 上的群组和频道也是如此,无论它们是公开还是非公开的。在那里分享的任何东西,包括文件、多媒体等,都没有真正的隐私。</strong></p><p><span>5、在对内容进行加密时,Telegram使用的是 </span><a href="https://www.wikidata.org/wiki/Q18558947" rel="">MTProto</a><span>,这是它自己的加密协议,也就是说没有其他人使用。虽然到目前为止还没有任何令人担忧的报道(MTProto毕竟是开源的),</span><strong>但这有可能成为问题,因为众所周知,专有的/晦涩的协议中的安全缺陷比被广泛使用的协议更难被发现。</strong></p><p><strong>如果您不得不使用 Telegram 并且担心自己的人身安全和隐私人权,唯一方法是为一对一的交流启用端对端加密。群聊就算了吧,真的不推荐。</strong></p><p><strong>请注意,端对端加密的聊天只能在移动设备中进行,不支持桌面版。</strong></p><p><span>您可以</span><a href="https://t.me/iyouport/11889" rel="">在这里选择更安全的通信工具</a><span>。</span></p><h3 class="header-with-anchor-widget"><strong>Telegram的隐私提示</strong><div class="header-anchor-widget" id="§telegram的隐私提示"><div class="header-anchor-widget-button-container"><div class="header-anchor-widget-button" href="https://iyouport.substack.com/i/87508422/telegram的隐私提示"><svg class="header-anchor-widget-icon" fill="none" height="20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewbox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></h3><p>建议所有中国用户务必做到以下这些措施中至少90%;敏感用户建议做到100%。Telegram多年来都是中国当局的重点盯防目标之一,您可能也知道这件事。</p><p><strong>1、位置隐私</strong><span> —— 确保 “附近的人” 功能被关闭(进入 “联系人” > “查找附近的人”)。这项功能应该是默认关闭的,除非您出于某种原因将其打开了,</span><strong><span>不要打开。不要用它来找朋友!在抗议现场的人们建议使用 </span><a href="https://briarproject.org/" rel="">Briar</a><span> 或 </span><a href="https://github.com/berty/berty" rel="">Berty</a><span> 等。</span><a href="https://t.me/iyouport/11593" rel="">在这里看到更多</a></strong><span>。(最理想的状况应该是您在自己的团队中提前部署这些设施;最差的情况是在抗议现场紧急组织并部署这些设施,以绕开镇压者的渗透。)</span></p><p><strong>2、电话号码隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 电话号码。在那里,关于谁可以看到您的电话号码 > 选择 Nobody。不论您注册用的号码是否实名,都建议选择隐藏。</span></p><p><strong>3、在线状态隐私</strong><span> —— 转到 Telegram 设置 > 隐私和安全 > “最后出现&在线“,在这里选择 Nobody。这可以让您对其他用户显示为永久离线。(这点很重要,加密货币爱好者可能更了解这一安全措施?如果您尚未了解并且感兴趣,我们可以在未来更详细解释。总之,这里先选Nobody。)</span></p><p><strong>4、头像照片隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 头像照片。在那里,选择 “我的联系人”(很遗憾这个地方您无法选择对所有人隐藏,所以,</span><strong><span>请特别注意不要随便添加联系人!确保只添加您认识的人!</span><a href="https://www.patreon.com/posts/cong-telegram-lu-72200795" rel="">在这里看到伪装您的熟人这种手段如何成为对您去匿名化的攻击形式</a></strong><span>)。</span></p><p><strong>5、通话隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 通话。在那里,选择 Nobody。</span></p><p><strong>6、消息隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 转发的消息。在那里,选择 Nobody (注意,在下面您可以添加个别例外。尽可能不添加比较好)。</span></p><p><strong>7、群组添加隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 群组和频道。从那里,选择 “我的联系人”。这将防止随机用户将您加入群组和频道。</span></p><p><strong>8、双因素身份验证</strong><span> —— 进入Telegram设置 > 隐私和安全 > 开启2FA。</span></p><p><strong>9、额外的安全</strong><span> — — 对于那些有额外安全意识和/或需求的人来说,以下两个额外的功能可以利用:</span></p><p><span>a) </span><strong>禁用数据和存储设置中的后台下载选项 Background Download </strong><span>—— 这将阻止应用程序自动下载媒体文件,让您可以更好地控制您想下载什么文件以及从谁那里下载。</span></p><p><span>b) 启用链接预览设置 —— 进入Telegram设置 > 隐私和安全 Privacy and Security > 数据设置 Data Settings > 链接预览 Link Previews。这将允许您在点击链接之前进行预览,以便减少钓鱼攻击的可能性 — — </span><strong><span>建议拒绝所有缩短链接!在查看到原链接之前不要直接点击!</span><a href="https://www.patreon.com/posts/cong-telegram-lu-72200795" rel="">查看原链接的方法在这里</a></strong><span>。</span></p><h3 class="header-with-anchor-widget"><strong>针对Telegram的信息搜索工具</strong><div class="header-anchor-widget" id="§针对telegram的信息搜索工具"><div class="header-anchor-widget-button-container"><div class="header-anchor-widget-button" href="https://iyouport.substack.com/i/87508422/针对telegram的信息搜索工具"><svg class="header-anchor-widget-icon" fill="none" height="20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewbox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></h3><p><span>昨天我们提醒了</span><a href="https://t.me/iyouport/12021" rel="">接下来更可能出现的局势</a><span> — — </span><strong>不仅有“秋后”,还包括信息战,统治者将使用大量歪曲的信息污染抗议战略,分化抗议者、恐吓支持者,旨在扑灭那些已经燃起的火焰。</strong></p><p><span>这种情况下后勤人员需要发挥作用:搜集信息、验证信息,即 开源情报。</span><a href="https://iyouport.substack.com/p/lr-iyp" rel="">准确说是社交媒体情报</a><span>。我们发布过非常多开源情报工具集(有一整个系列)但现在您可以不容易找到最想要的工具。于是以下内容我们将总结一些针对 Telegram进行搜索的基本工具。</span></p><p><span>强调,建议参与这项工作的朋友为 Telegram 安装一个桌面应用程序,这里是下载页面的</span><a href="https://telegram.org/?setln=en" rel="">官方链接</a><span>,这样可以简化搜索,并允许您绕开移动应用环境的限制对URL进行操作。</span></p><p>聊天记录导出功能也只限于Telegram的桌面版。可以通过在桌面应用程序上打开感兴趣的聊天,并点击右上角的三点图标来找到它。您可以选择您的聊天记录导出偏好 — — 以及选择下载文件的大小限制(目前最大为4GB)。</p><h3 class="header-with-anchor-widget"><strong>以下是一些 Telegram 的搜索引擎</strong><div class="header-anchor-widget" id="§以下是一些-telegram-的搜索引擎"><div class="header-anchor-widget-button-container"><div class="header-anchor-widget-button" href="https://iyouport.substack.com/i/87508422/以下是一些-telegram-的搜索引擎"><svg class="header-anchor-widget-icon" fill="none" height="20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewbox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></h3><div class="available-content"><div class="body markup" dir="auto"><p><a href="https://cse.google.com/cse?cx=006368593537057042503:ig4r3rz35qi" rel="">Commentgram</a><span> — 谷歌为Telegram频道中的评论定制的搜索引擎。</span></p><p><a href="https://lyzem.com/" rel="">Lyzem</a><span> — 被宣传为 “专门为Telegram和Telegraph平台创建的独立搜索引擎”。是搜索关键词、频道和公开组的可靠工具。包含一个允许用户对帖子进行索引的综合服务 — </span><a href="https://t.me/IndexPost_bot" rel="">@IndexPost_bot</a><span>。</span></p><p><a href="https://cse.google.com/cse?&cx=006368593537057042503:efxu7xprihg#gsc.tab=0" rel="">Telegago</a><span> — 专为Telegram的谷歌定制搜索引擎。</span></p><p><a href="https://telemetr.io/en/channels" rel="">Telemetrio</a><span> — 按评级、人气、国家等排序的Telegram频道的巨大列表。</span></p><p><a href="https://tgstat.com/" rel="">TGStat</a><span> — 包含大量的可搜索目录和特定国家的频道指标。</span></p><p><a href="https://tlgrm.eu/channels" rel="">Tlgrm EU</a><span> — 按类别分组的各种频道列表。这个网站维护着一个频道目录,如果您有自己喜欢的频道,可以通过填写一个小表格后将您的最爱加入该目录。</span></p><p><span>还有其他 Telegram CSE,很多开源情报爱好者都在开发自己的小工具,搜索结果可能有所不同,取决于它们索引的来源,也取决于这些来源的更新程度。比如</span><a href="https://cse.google.com/cse?cx=004805129374225513871:p8lhfo0g3hg&q" rel="">这里</a><span>是一个可靠的 Telegram CSE 的例子(作者不详)。</span></p><p><span>关于信息验证方法,见我们的</span><a href="https://start.me/p/1kod2L/iyp-direct-action-5" rel="">列表-5中</a><span> “开始调查”板块。</span></p><p>就是这样!希望所有抗议行动的参与者和支持者都能顺利平安。</p><p><span>这两天来IYP回答了非常多的提问,很多中国朋友提出了重要的和值得深入研究的话题,令人兴奋。预告:接下来的时间里,我们将对这些问题进行仔细整理,并逐一发布我们的详细分析,最终汇总它们。因为这是一个非常好的机会可以提升各位有志之士在各方面的能力。</span><strong>此刻的工作要点,保护安全!保存实力!</strong><span>晚些时候见。⭕️</span></p><p></p><p></p></div></div><div class="paywall-content"><div class="body markup" dir="auto"><div class="captioned-image-container"><figure><a class="image-link is-viewable-img image2" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fde3232a1-7dc7-462a-84d5-619704297aea_1622x1082.png" rel="" target="_blank"><div class="image2-inset"><picture><source type="image/webp"></source><img alt="" class="sizing-normal" data-attrs="{"src":"https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/de3232a1-7dc7-462a-84d5-619704297aea_1622x1082.png","fullscreen":null,"imageSize":null,"height":971,"width":1456,"resizeWidth":null,"bytes":1322040,"alt":null,"title":null,"type":"image/png","href":null,"belowTheFold":false,"internalRedirect":null}" height="971" src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fde3232a1-7dc7-462a-84d5-619704297aea_1622x1082.png" width="1456" /></picture><div class="image-link-expand"><svg class="lucide lucide-maximize2" fill="none" height="16" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="#FFFFFF" viewbox="0 0 24 24" width="16" xmlns="http://www.w3.org/2000/svg"></svg></div></div></a></figure></div></div></div><p>的人也都会收到通知)。</p><p><span>2、标准的 Telegram 聊天</span><strong>并不是</strong><span>端对端加密的,要使用加密您必需手动选择。telegram 群组也不加密,甚至可以通过搜索引擎找到。</span></p><p><span>3、</span><strong>Telegram 只对传输中的数据进行加密(在服务器和终端用户之间),但它不对静态数据进行加密</strong><span> — — 已经发送的信息未加密地存储在Telegram的云服务器上,理论上Telegram的员工可以随意访问所有这些信息,或者在数据泄露的情况下被无意中作为纯文本发布。这也是此前</span><a href="https://t.me/iyouport/11884" rel="">那位俄罗斯姑娘被抓住</a><span>的可能原因之一。</span></p><p><span>4、</span><strong>如上,Telegram 上的群组和频道也是如此,无论它们是公开还是非公开的。在那里分享的任何东西,包括文件、多媒体等,都没有真正的隐私。</strong></p><p><span>5、在对内容进行加密时,Telegram使用的是 </span><a href="https://www.wikidata.org/wiki/Q18558947" rel="">MTProto</a><span>,这是它自己的加密协议,也就是说没有其他人使用。虽然到目前为止还没有任何令人担忧的报道(MTProto毕竟是开源的),</span><strong>但这有可能成为问题,因为众所周知,专有的/晦涩的协议中的安全缺陷比被广泛使用的协议更难被发现。</strong></p><p><strong>如果您不得不使用 Telegram 并且担心自己的人身安全和隐私人权,唯一方法是为一对一的交流启用端对端加密。群聊就算了吧,真的不推荐。</strong></p><p><strong>请注意,端对端加密的聊天只能在移动设备中进行,不支持桌面版。</strong></p><p><span>您可以</span><a href="https://t.me/iyouport/11889" rel="">在这里选择更安全的通信工具</a><span>。</span></p><h3 class="header-with-anchor-widget"><strong>Telegram的隐私提示</strong><div class="header-anchor-widget" id="§telegram的隐私提示"><div class="header-anchor-widget-button-container"><div class="header-anchor-widget-button" href="https://iyouport.substack.com/i/87508422/telegram的隐私提示"><svg class="header-anchor-widget-icon" fill="none" height="20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewbox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></h3><p>建议所有中国用户务必做到以下这些措施中至少90%;敏感用户建议做到100%。Telegram多年来都是中国当局的重点盯防目标之一,您可能也知道这件事。</p><p><strong>1、位置隐私</strong><span> —— 确保 “附近的人” 功能被关闭(进入 “联系人” > “查找附近的人”)。这项功能应该是默认关闭的,除非您出于某种原因将其打开了,</span><strong><span>不要打开。不要用它来找朋友!在抗议现场的人们建议使用 </span><a href="https://briarproject.org/" rel="">Briar</a><span> 或 </span><a href="https://github.com/berty/berty" rel="">Berty</a><span> 等。</span><a href="https://t.me/iyouport/11593" rel="">在这里看到更多</a></strong><span>。(最理想的状况应该是您在自己的团队中提前部署这些设施;最差的情况是在抗议现场紧急组织并部署这些设施,以绕开镇压者的渗透。)</span></p><p><strong>2、电话号码隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 电话号码。在那里,关于谁可以看到您的电话号码 > 选择 Nobody。不论您注册用的号码是否实名,都建议选择隐藏。</span></p><p><strong>3、在线状态隐私</strong><span> —— 转到 Telegram 设置 > 隐私和安全 > “最后出现&在线“,在这里选择 Nobody。这可以让您对其他用户显示为永久离线。(这点很重要,加密货币爱好者可能更了解这一安全措施?如果您尚未了解并且感兴趣,我们可以在未来更详细解释。总之,这里先选Nobody。)</span></p><p><strong>4、头像照片隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 头像照片。在那里,选择 “我的联系人”(很遗憾这个地方您无法选择对所有人隐藏,所以,</span><strong><span>请特别注意不要随便添加联系人!确保只添加您认识的人!</span><a href="https://www.patreon.com/posts/cong-telegram-lu-72200795" rel="">在这里看到伪装您的熟人这种手段如何成为对您去匿名化的攻击形式</a></strong><span>)。</span></p><p><strong>5、通话隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 通话。在那里,选择 Nobody。</span></p><p><strong>6、消息隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 转发的消息。在那里,选择 Nobody (注意,在下面您可以添加个别例外。尽可能不添加比较好)。</span></p><p><strong>7、群组添加隐私</strong><span> —— 进入Telegram设置 > 隐私和安全 > 群组和频道。从那里,选择 “我的联系人”。这将防止随机用户将您加入群组和频道。</span></p><p><strong>8、双因素身份验证</strong><span> —— 进入Telegram设置 > 隐私和安全 > 开启2FA。</span></p><p><strong>9、额外的安全</strong><span> — — 对于那些有额外安全意识和/或需求的人来说,以下两个额外的功能可以利用:</span></p><p><span>a) </span><strong>禁用数据和存储设置中的后台下载选项 Background Download </strong><span>—— 这将阻止应用程序自动下载媒体文件,让您可以更好地控制您想下载什么文件以及从谁那里下载。</span></p><p><span>b) 启用链接预览设置 —— 进入Telegram设置 > 隐私和安全 Privacy and Security > 数据设置 Data Settings > 链接预览 Link Previews。这将允许您在点击链接之前进行预览,以便减少钓鱼攻击的可能性 — — </span><strong><span>建议拒绝所有缩短链接!在查看到原链接之前不要直接点击!</span><a href="https://www.patreon.com/posts/cong-telegram-lu-72200795" rel="">查看原链接的方法在这里</a></strong><span>。</span></p><h3 class="header-with-anchor-widget"><strong>针对Telegram的信息搜索工具</strong><div class="header-anchor-widget" id="§针对telegram的信息搜索工具"><div class="header-anchor-widget-button-container"><div class="header-anchor-widget-button" href="https://iyouport.substack.com/i/87508422/针对telegram的信息搜索工具"><svg class="header-anchor-widget-icon" fill="none" height="20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewbox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></h3><p><span>昨天我们提醒了</span><a href="https://t.me/iyouport/12021" rel="">接下来更可能出现的局势</a><span> — — </span><strong>不仅有“秋后”,还包括信息战,统治者将使用大量歪曲的信息污染抗议战略,分化抗议者、恐吓支持者,旨在扑灭那些已经燃起的火焰。</strong></p><p><span>这种情况下后勤人员需要发挥作用:搜集信息、验证信息,即 开源情报。</span><a href="https://iyouport.substack.com/p/lr-iyp" rel="">准确说是社交媒体情报</a><span>。我们发布过非常多开源情报工具集(有一整个系列)但现在您可以不容易找到最想要的工具。于是以下内容我们将总结一些针对 Telegram进行搜索的基本工具。</span></p><p><span>强调,建议参与这项工作的朋友为 Telegram 安装一个桌面应用程序,这里是下载页面的</span><a href="https://telegram.org/?setln=en" rel="">官方链接</a><span>,这样可以简化搜索,并允许您绕开移动应用环境的限制对URL进行操作。</span></p><p>聊天记录导出功能也只限于Telegram的桌面版。可以通过在桌面应用程序上打开感兴趣的聊天,并点击右上角的三点图标来找到它。您可以选择您的聊天记录导出偏好 — — 以及选择下载文件的大小限制(目前最大为4GB)。</p><h3 class="header-with-anchor-widget"><strong>以下是一些 Telegram 的搜索引擎</strong><div class="header-anchor-widget" id="§以下是一些-telegram-的搜索引擎"><div class="header-anchor-widget-button-container"><div class="header-anchor-widget-button" href="https://iyouport.substack.com/i/87508422/以下是一些-telegram-的搜索引擎"><svg class="header-anchor-widget-icon" fill="none" height="20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewbox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></h3><p><a href="https://cse.google.com/cse?cx=006368593537057042503:ig4r3rz35qi" rel="">Commentgram</a><span> — 谷歌为Telegram频道中的评论定制的搜索引擎。</span></p><p><a href="https://lyzem.com/" rel="">Lyzem</a><span> — 被宣传为 “专门为Telegram和Telegraph平台创建的独立搜索引擎”。是搜索关键词、频道和公开组的可靠工具。包含一个允许用户对帖子进行索引的综合服务 — </span><a href="https://t.me/IndexPost_bot" rel="">@IndexPost_bot</a><span>。</span></p><p><a href="https://cse.google.com/cse?&cx=006368593537057042503:efxu7xprihg#gsc.tab=0" rel="">Telegago</a><span> — 专为Telegram的谷歌定制搜索引擎。</span></p><p><a href="https://telemetr.io/en/channels" rel="">Telemetrio</a><span> — 按评级、人气、国家等排序的Telegram频道的巨大列表。</span></p><p><a href="https://tgstat.com/" rel="">TGStat</a><span> — 包含大量的可搜索目录和特定国家的频道指标。</span></p><p><a href="https://tlgrm.eu/channels" rel="">Tlgrm EU</a><span> — 按类别分组的各种频道列表。这个网站维护着一个频道目录,如果您有自己喜欢的频道,可以通过填写一个小表格后将您的最爱加入该目录。</span></p><p><span>还有其他 Telegram CSE,很多开源情报爱好者都在开发自己的小工具,搜索结果可能有所不同,取决于它们索引的来源,也取决于这些来源的更新程度。比如</span><a href="https://cse.google.com/cse?cx=004805129374225513871:p8lhfo0g3hg&q" rel="">这里</a><span>是一个可靠的 Telegram CSE 的例子(作者不详)。</span></p><p><span>关于信息验证方法,见我们的</span><a href="https://start.me/p/1kod2L/iyp-direct-action-5" rel="">列表-5中</a><span> “开始调查”板块。</span></p><p>就是这样!希望所有抗议行动的参与者和支持者都能顺利平安。</p><p><span>这两天来IYP回答了非常多的提问,很多中国朋友提出了重要的和值得深入研究的话题,令人兴奋。预告:接下来的时间里,我们将对这些问题进行仔细整理,并逐一发布我们的详细分析,最终汇总它们。因为这是一个非常好的机会可以提升各位有志之士在各方面的能力。</span><strong>此刻的工作要点,保护安全!保存实力!</strong><span>晚些时候见。⭕️</span></p><h1 class="post-title unpublished">Telegram的隐私保护指南,和信息搜索工具</h1><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-56175937139046141742022-11-22T12:08:00.005+08:002022-12-14T10:36:04.098+08:00一些网络安全方面的基础科普 - P1 识别恶意软件<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p style="text-indent: 0;">来自: <a href="https://blog.binklac.com/d4ad30414b22/" target="_blank">https://blog.binklac.com/d4ad30414b22/</a></p><p> </p><p>这几天看到了一些比较肆虐而且比较常见的互联网病毒传播,所以专门写篇文章聊一聊这个问题</p><p>特别一提,由于本文的性质,本文章为公共领域文章,即在世界范围内放弃本文的所有权利,故任何人都可以以任何方式转载或重新发布</p><p>当然,如果你可以保留指向本文章的链接那就再好不过了,因为本文章可能会更新,保留链接可以使读者获得及时的更新</p><p><strong>本文章虽然是面向Windows的,但是安卓或者其他平台举一反三也可以用,本文章的方案只是个人经验,常在河边走总会踩进去!</strong></p><h2>01 手把手的入门! 浅谈一下比较泛用的病毒(恶意软件)识别方式</h2><h3>01–1 万事开头难: 误报</h3><p>对于对信息安全方面不太熟悉的朋友来说,有一个词很熟悉: <strong>误报</strong></p><p>误报这个问题具体来说就是因为某些软件(外挂, 破解器)的行为和病毒实在是太像了,导致杀毒软件不能准确的识别</p><p>于是有些病毒作者就把思路打开了: <em><strong>如果杀毒软件会把病毒和破解工具搞混,那是不是可以把他们捆绑在一起让用户手动放行呢?</strong></em></p><p>没错,是这样的,并且有很大一部分的病毒也正是这样传播的,所以,<em><strong>支持正版,不要开挂</strong></em>是预防病毒很好的手段</p><p>哎哎别关网页,肯定有人要说了: “你这说了个JB”,别慌,接下来是正题</p><p><strong>看之前请记住,以下的分析并不能替代杀毒软件的动态监测</strong></p><p><strong>也请不要抱着: 我也没啥值钱的东西感染就感染了呗</strong></p><p><strong>现代的木马盗号已经是轻的了,冒充你的信息贷款,使用你的电脑攻击其他设备或者进行其他违法行为才是需要警惕的,毕竟警察看到的是从你的设备发出的攻击</strong></p><h3>01–2 Virus Total: 简单,高效的恶意文件分析识别网站</h3><p>接下来,就是我们的正题: <strong>如何将外挂等工具与木马病毒区分开来</strong></p><p>当然,如果你是卡巴斯基用户…只需要右键一下…</p><p><img alt="image-20221121074133901.png" src="https://blog.binklac.com/image/image-20221121074133901.png" /></p><p>咳咳,跑题了,先放链接: <a href="https://www.virustotal.com/gui/home/upload" rel="noreferrer noopener" target="_blank">Virus Total</a></p><p>打开上面的链接,你会看到这样的页面</p><p><img alt="image-20221121055646500.png" src="https://blog.binklac.com/image/image-20221121055646500.png" /></p><p>OK, 这就是我们的主角了,具体它是什么网站感兴趣的可以自行查询</p><p>主页很简单,点击 <strong>Choose file</strong> 按钮或者将文件拖拽到中间的图标上[参考下图]即可上传文件进行分析</p><p><img alt="image-20221121060717496.png" src="https://blog.binklac.com/image/image-20221121060717496.png" /></p><p>拖拽上去之后,如果你的文件从来没有人上传过,会弹出一个窗口要求你确认上传[参考下图],点击中间的 <strong>Confirm upload</strong> 按钮即可上传。 请注意,<strong>你所上传的文件,对于专业的安全研究人员来说,是可以下载的,请不要上传涉及机密以及个人隐私的文件</strong></p><p><img alt="image-20221121061919925.png" src="https://blog.binklac.com/image/image-20221121061919925.png" /></p><p>新的文件可能需要一些时间来扫描,等扫描结束之后,我们即可看到结果页面,大概长下面这样</p><p><img alt="image-20221121062540403.png" src="https://blog.binklac.com/image/image-20221121062540403.png" /></p><p>首先,最主要的部分就是文件安全概览部分,也就是下图中的部分</p><p><img alt="image-20221121063046747.png" src="https://blog.binklac.com/image/image-20221121063046747.png" /></p><p><strong>左边的圆环 [图中标有 1 的方框]</strong> 代表着有多少杀毒软件认为这个文件是带有恶意的,在这张图中,总共有70个杀毒软件对文件进行了扫描,其中有0个杀毒软件将其汇报为恶意</p><p><strong>圆环的下方 [图中标有 2 的方框]</strong> 代表有多少VT的用户认为这个文件是恶意或者善意的,图中只有我自己投了一票,所以上面的评分是问号。<strong>这个评分是个人就能投,目前对于恶意刷票是否有惩罚我没有了解,所以它并不能权威的表示这个文件具体的行为,但是具有一定的参考价值</strong></p><p><strong>在整体靠右的位置 [图中标有 3 的方框]</strong>,代表这个文件第一次上传是什么时候,可以看到我选择的文件在五天前第一次被上传,通常来说,较旧的文件(大于半年)的结果是比较准确的,因为不明确的文件大概率都被各大安全公司已经拖回去手动分析过了,而较新的文件可能存在漏检的问题,因为病毒也会尝试新的技术来躲避杀毒软件的追踪</p><p>继续向下看,就可以看到几个分页 [见下图],点击任意标题即可跳转到对应的页,四个标签分别对应着 **杀毒软件检测结果 [图中标有1的方框]<strong>,</strong>文件详情 [图中标有2的方框]<strong>,</strong>该文件的行为(就是他执行之后干了啥) [图中标有3的方框]<strong>,</strong>社区评分的详情 [图中标有4的方框,对应上一张图的2号框]**,</p><p><img alt="image-20221121064229727.png" src="https://blog.binklac.com/image/image-20221121064229727.png" /></p><p>其中,我们在 <strong>杀毒软件检测结果</strong> 页中,主要关注 <strong>如果杀毒软件报毒,那么杀毒软件认为他是个什么东西,即下图中红色字体的部分</strong> (下图中,为了演示我换了一个报毒的样本)</p><p><img alt="image-20221121065913636.png" src="https://blog.binklac.com/image/image-20221121065913636.png" /></p><p>而另外几个标签页,则会结合杀毒软件检测结果中的信息综合使用,详见下文</p><p>在接下来的文章中,我会选择四类文件进行分析,分别是 <strong>完全可信的文件</strong>, <strong>大概率可信的文件</strong>, <strong>有疑点但是也许可信的文件</strong>, <strong>大概率不可信的文件</strong>,并向大家指出如何区分它们.</p><h3>01–3 典型的完全可信文件</h3><p>这一部分最为简单,一个典型的白名单文件应该做到什么呢?代码透明,没有恶意行为,有可信任的文件发布者,满足这点即可放心的使用</p><p>在这里,我使用了自己的 EV 证书签名了一个来自 Google Android Platform Tools 的文件,并将其上传至 Virus Total,<a href="https://www.virustotal.com/gui/file/660de8659567171bf0089279ab7feea64f50e381132d6c2d31fe0c5a0032551d/details" rel="noreferrer noopener" target="_blank">可以点击这个链接</a> 查看</p><p>对于这个文件,72个杀毒软件对其进行了测试,其中有0个杀毒软件将其标记为了病毒</p><p>同时我们点击文件详情(忘了在哪里?回去看看吧 XD), 向下拖,可以看到有一个叫做签名信息的区域,其中有一行带有绿色对勾的 <strong>Signed file, valid signature</strong> , 表明该文件经过了数字签名(什么是数字签名? <a href="https://zhuanlan.zhihu.com/p/354439233" rel="noreferrer noopener" target="_blank">点这里</a> 或者 <a href="https://ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html" rel="noreferrer noopener" target="_blank">点这里</a> 查看科普),同时该文件的签名人持有的是EV证书(什么是EV证书? <a href="https://www.wosign.com/Products/digicert_CodeSigning_EV.htm" rel="noreferrer noopener" target="_blank">点这里查看科普</a>) 所以该文件大概率是可信的. [见下图]</p><p><img alt="image-20221121071645358.png" src="https://blog.binklac.com/image/image-20221121071645358.png" /></p><h3>01–4 大概率可信的文件</h3><p>这里我们选择了一个来自 Github 的文件,其报告可以从 <a href="https://www.virustotal.com/gui/file/7f345f2c2f188e9a31b14474bd52e4b68bd2df67a6da3eb0ab3f4ccb3e26276f/behavior" rel="noreferrer noopener" target="_blank">这里</a> 查看,大部分情况下,我们使用的一些小工具并没有进行数字签名(贵啊!),不过相对来说,还是比较好区分的</p><p>首先,没有任何杀毒软件对其报毒,这很好,其次,虽然它没有签名,但是他也没有任何的异常行为(见下图红框),所以我们认为他是可信的</p><p><img alt="image-20221121081224780.png" src="https://blog.binklac.com/image/image-20221121081224780.png" /></p><h3>01–5 有疑点但是也许可信的文件</h3><p>接下来,也就是本文的重点难点,<strong>怎么样区分误报和真正的恶意软件</strong></p><p>在阅读以下文本之前,强烈建议你先看看 <strong><a href="https://encyclopedia.kaspersky.com/knowledge/who-creates-malware-and-why/" rel="noreferrer noopener" target="_blank">来自卡巴斯基的恶意软件科普及命名简介</a></strong></p><p>首先,先回顾一个问题: <strong>为什么会有误报发生?</strong> 是因为<strong>某些软件(外挂, 破解器)的行为和病毒实在是太像了,导致杀毒软件不能准确的识别</strong></p><p>另一个方面,误报<strong>通常发生在用户使用量较小的杀毒软件上</strong>,这很好理解,因为用户量大的杀毒软件通常都针对误报做了足够好的优化,一般我认为在 <strong>ESET-NOD32</strong>, <strong>Avast</strong>, <strong>Comodo</strong>, <strong>BitDefender</strong>, <em><strong>Kaspersky</strong></em>, <em><strong>Symantec</strong></em>,<strong>Microsoft</strong>, <strong>Rising</strong>, <strong>Tencent</strong> 算是大厂,因为他们的用户量比较大</p><p>最后,<strong>误报通常都 <em>不</em> 会显示出有意义的病毒种类信息</strong>,因为杀毒软件只是因为不认识或者怀疑而报毒,而并不是因为识别出了具体的行为</p><p>拿风灵月影 <a href="https://www.virustotal.com/gui/file/057d88f7267e2996447eb41bd4d1f2320df30535e7f0bb2023b11281e98dcd11" rel="noreferrer noopener" target="_blank">举个例子</a></p><p><img alt="image-20221121175252340.png" src="https://blog.binklac.com/image/image-20221121175252340.png" /></p><p>虽然有22个杀毒软件认为他不是好东西,但是大家都基本可以认出来他是 <strong>GameHack</strong>, <strong>3DMGAME Trainer</strong>, 而上面的大厂列表中,最严重的是 <strong>Comodo</strong> 的 <strong>ApplicUnwnt</strong> , 也就是说本身不是恶意, 也许只是对你没有啥用的软件,所以虽然他看起来很多报毒,但是实际上并没有啥大问题</p><p>再换个例子,<a href="https://www.virustotal.com/gui/file/edad8bb0b355e62517ba8e8f4ea8e554db54ac23485925615ff6bbbc93527319" rel="noreferrer noopener" target="_blank">另外一款游戏修改器</a></p><p><img alt="image-20221121175921201.png" src="https://blog.binklac.com/image/image-20221121175921201.png" /></p><p>只有四款杀毒软件认为其有恶意,其中 <strong>Symantec</strong> 的报毒原因是来源于机器学习 … 总之,IDS也没有啥严重的规则命中,我们也基本可以信任它。</p><p>接下来我们上点难度,用非外挂软件 <a href="https://www.virustotal.com/gui/file/c9673b2c396ed730d8b0f430666e863fad8cd1130bf73ec168d557df9bb15ce2" rel="noreferrer noopener" target="_blank">举个例子</a> , 这个链接中的样本有 9 /67 的杀毒软件认为他是病毒</p><p><img alt="image-20221121150827935.png" src="https://blog.binklac.com/image/image-20221121150827935.png" /></p><p>我们先看,其中有三款杀毒软件将文件简单的将文件标为 <strong>Malicious(恶意)</strong>,针对这个结果,我们等下看</p><p>有三款杀毒软件明确的告诉我们,他们只是怀疑这个程序,分别是 <strong>ESET-NOD32</strong> 的 <strong>A Variant Of Win64/Packed.VMProtect.J Suspicious(使用了加壳工具VMProtect的可疑程序)</strong>,<strong>SentinelOne (Static ML)</strong> 的 <strong>Static AI — Suspicious PE (可疑的PE文件)</strong>,<strong>Sophos</strong> 的 <strong>Generic ML PUA (PUA) (PUA: 不需要的软件,也许是垃圾软件)</strong></p><p>当然了,有的朋友肯定要说了,你知道他们代表的是啥,我又不知道啊!首先,我们可以尝试搜索 <strong>报毒的杀毒软件名 <空格> 汇报的病毒名称</strong>,例如我们搜索 <strong>Sophos Generic ML PUA (PUA)</strong> 搜索引擎会给我们以下的结果</p><p><img alt="image-20221121153456704.png" src="https://blog.binklac.com/image/image-20221121153456704.png" /></p><p>这次很幸运,头两个结果将会把我们带到杀毒软件的官方文档,<a href="https://support.sophos.com/support/s/article/KB-000036922?language=en_US" rel="noreferrer noopener" target="_blank">点击进去</a> 会看到杀毒软件将其描述为 <strong>潜在有害应用程序 (PUA) 是一个术语,用于描述虽然不是恶意的,但通常被认为不适合业务网络的应用程序</strong>,也就是说通常不包含恶意</p><p>而 <strong>SentinelOne</strong> 的汇报则简单明了,直接说明了是可疑的文件,我们先跳过不管</p><p><strong>ESET-NOD32</strong> 的情况则稍微有一些复杂,我们的搜索结果大概长这样</p><p><img alt="image-20221121154204253.png" src="https://blog.binklac.com/image/image-20221121154204253.png" /></p><p>我们通过阅读开始的几篇文章 <strong>不是卖软件</strong> 的文章即可了解并推断,这种误报是相当常见的</p><p>接下来,我们继续查看最后的几款杀毒软件,在互联网上搜索,发现针对 <strong>Trojan.Malware.300983.susgen</strong> 的反馈大多是误报,<strong>Trojan.Heur!.02292022</strong> 几乎没有有用的信息,<strong>Generic.mg.6a3cf94332d7fa61</strong> 更是几乎没有关联的网页</p><p>最后我们看看大厂,在 <strong>ESET-NOD32</strong>, <strong>Avast</strong>, <strong>Comodo</strong>, <strong>BitDefender</strong>, <em><strong>Kaspersky</strong></em>, <strong>Microsoft</strong>, <strong>Rising</strong>, <strong>Tencent</strong> 中,只有一家汇报了风险,而且是怀疑,所以这个文件大概率没有问题</p><p>总结一下,如果大家都认为一个样本属于 <strong>GameHack</strong>, <strong>PUA</strong>, <strong>HACKTOOL</strong> 之类的标签,那么他大概率是没啥问题的,如果一些软件为了防止破解加了很重的保护,那么大概率也是误报,最终可以依据 <strong>ESET-NOD32</strong>, <strong>Avast</strong>, <strong>Comodo</strong>, <strong>BitDefender</strong>, <em><strong>Kaspersky</strong></em>, <em><strong>Symantec</strong></em>,<strong>Microsoft</strong>, <strong>Rising</strong>, <strong>Tencent</strong> 的报告做出决定,如果他们都觉得没啥事,那大概率是误报,但是如果他们中有 <strong>两个及以上</strong> 认为这个程序有害,那大概率就是真的有问题</p><h3>01–6 正儿八经的恶意程序</h3><p>接下来我给大家看看正经的恶意程序长啥样</p><p><a href="https://www.virustotal.com/gui/file/e9a3ad87d41224218c4472c812b7c095edfec6b48f7cd5d87c52bdc50678e113" rel="noreferrer noopener" target="_blank">安卓偷照片的勒索病毒</a></p><p><img alt="image-20221121181731669.png" src="https://blog.binklac.com/image/image-20221121181731669.png" /></p><p><strong>Kaspersky</strong>, <strong>ESET-NOD32</strong>, <strong>Avast</strong>,<strong>BitDefender</strong> 均准确的识别出这是 <strong>Spy Trojan(窃取信息的木马)</strong></p><p>Windows<a href="https://www.virustotal.com/gui/file/be2e8a3557c637707ff81d92c181c2cbfe84ac9c21d1ef8afdf9ec1d2b49b957" rel="noreferrer noopener" target="_blank">下面的远程控制木马</a></p><p><img alt="image-20221121182052440.png" src="https://blog.binklac.com/image/image-20221121182052440.png" /></p><p>这还用说?满脸都是”我是木马”</p><p>总之,基本<strong>卡巴斯基(Kaspersky)</strong>报毒,他就真的是毒,所以卡巴红了就…别用了</p><p>本篇到这里就写完了,下一篇教大家,如果真的很想用,那么应该怎么搭建一个安全的环境</p><p>我很少写这样基础向的文章,如果有什么问题可以联系我,例如推特 @VeroFess</p><p>下次见!</p><hr /><p style="text-indent: 0;"><br /></p><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-8707384418470951752022-11-22T11:48:00.003+08:002022-12-06T09:41:14.655+08:00 用 Wireshark 分析 TCP 吞吐瓶颈<span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"> </span><p>来自: <a href="https://www.kawabangga.com/posts/4794">https://www.kawabangga.com/posts/4794</a> <br /></p><p>Debug 网络质量的时候,我们一般会关注两个因素:延迟和吞吐量(带宽)。延迟比较好验证,Ping 一下或者 <a href="https://www.kawabangga.com/posts/4275">mtr</a> 一下就能看出来。这篇文章分享一个 debug 吞吐量的办法。</p><p>看重吞吐量的场景一般是所谓的长肥管道(Long Fat Networks, LFN, <a href="https://datatracker.ietf.org/doc/html/rfc7323">rfc7323</a>). 比如下载大文件。吞吐量没有达到网络的上限,主要可能受 3 个方面的影响:</p><ol><li>发送端出现了瓶颈</li><li>接收端出现了瓶颈</li><li>中间的网络层出现了瓶颈</li></ol><p>发送端出现瓶颈一般的情况是 buffer 不够大,因为发送的过程是,应用调用 syscall,将要发送的数据放到 buffer 里面,然后由系统负责发送出去。如果 buffer 满了,那么应用会阻塞住(如果使用 block 的 API 的话),直到 buffer 可用了再继续 write,生产者和消费者模式。</p><div class="wp-caption aligncenter" id="attachment_4796" style="width: 276px;"><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-bufer.gif"><img alt="" aria-describedby="caption-attachment-4796" class="wp-image-4796 size-full" height="298" src="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-bufer.gif" width="266" /></a><p class="wp-caption-text" id="caption-attachment-4796">图片来自 <a href="https://www.ciscopress.com/articles/article.asp?p=769557&seqNum=2">cisco</a></p></div><p>发送端出现瓶颈一般都比较好排查,甚至通过应用的日志看何时阻塞住了即可。大部分情况都是第 2,3 种情况,比较难以排查。这种情况发生在,发送端的应用已经将内容写入到了系统的 buffer 中,但是系统并没有很快的发送出去。</p><p>TCP 为了优化传输效率(注意这里的传输效率,并不是单纯某一个 TCP 连接的传输效率,而是整体网络的效率),会:</p><ol><li>保护接收端,发送的数据不会超过接收端的 buffer 大小 (Flow control)。数据发送到接受端,也是和上面介绍的过程类似,kernel 先负责收好包放到 buffer 中,然后上层应用程序处理这个 buffer 中的内容,如果接收端的 buffer 过小,那么很容易出现瓶颈,即应用程序还没来得及处理就被填满了。那么如果数据继续发过来,buffer 存不下,接收端只能丢弃。</li><li>保护网络,发送的数据不会 overwhelming 网络 (Congestion Control, 拥塞控制), 如果中间的网络出现瓶颈,会导致长肥管道的吞吐不理想;</li></ol><p>对于接收端的保护,在两边连接建立的时候,会协商好接收端的 buffer 大小 (receiver window size, rwnd), 并且在后续的发送中,接收端也会在每一个 ack 回包中报告自己剩余和接受的 window 大小。这样,发送端在发送的时候会保证不会发送超过接收端 buffer 大小的数据。(意思是,发送端需要负责,receiver 没有 ack 的总数,不会超过 receiver 的 buffer.)</p><div class="wp-caption aligncenter" id="attachment_4795" style="width: 510px;"><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/receiver-buffer.gif"><img alt="" aria-describedby="caption-attachment-4795" class="wp-image-4795 size-full" height="388" src="https://www.kawabangga.com/wp-content/uploads/2022/08/receiver-buffer.gif" width="500" /></a><p class="wp-caption-text" id="caption-attachment-4795">图片来自 <a href="https://www.ciscopress.com/articles/article.asp?p=769557&seqNum=2">cisco</a></p></div><p>对于网络的保护,原理也是维护一个 Window,叫做 Congestion window,拥塞窗口,cwnd, 这个窗口就是当前网络的限制,发送端不会发送超过这个窗口的容量(没有 ack 的总数不会超过 cwnd)。</p><p>怎么找到这个 cwnd 的值呢?</p><p>这个就是关键了,默认的算法是 cubic, 也有其他算法可以使用,比如 Google 的 <a href="https://www.kawabangga.com/posts/4086">BBR</a>.</p><p>主要的逻辑是,慢启动(Slow start), 发送数据来测试,如果能正确收到 receiver 那边的 ack,说明当前网络能容纳这个吞吐,将 cwnd x 2,然后继续测试。直到下面一种情况发生:</p><ol><li>发送的包没有收到 ACK</li><li>cwnd 已经等于 rwnd 了</li></ol><p>第 2 点很好理解,说明网络吞吐并不是一个瓶颈,瓶颈是在接收端的 buffer 不够大。cwnd 不能超过 rwnd,不然会 overload 接收端。</p><p>对于第 1 点,本质上,发送端是用丢包来检测网络状况的,如果没有发生丢包,表示一切正常,如果发生丢包,说明网络处理不了这个发送速度,这时候发送端会直接将 cwnd 减半。</p><p>但实际造成第 1 点的情况并不一定是网络吞吐瓶颈,而可能是以下几种情况:</p><ol><li>网络达到了瓶颈</li><li>网络质量问题丢包</li><li>中间网络设备延迟了包的送达,导致发送端没有在预期时间内收到 ACK</li></ol><p>2 和 3 原因都会造成 cwnd 下降,无法充分利用网络吞吐。</p><p>以上就是基本的原理,下面介绍如何定位这种问题。</p><h2>rwnd 查看方式</h2><p>这个 window size 直接就在 TCP header 里面,抓下来就能看这个字段。</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-handshake-factor.png"><img alt="" class="aligncenter size-full wp-image-4798" height="1350" src="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-handshake-factor.png" width="2728" /></a></p><p>但是真正的 window size 需要乘以 factor, factor 是在 <a href="https://en.wikipedia.org/wiki/TCP_window_scale_option">TCP 握手节点通过 TCP Options 协商的</a>。所以如果分析一条 TCP 连接的 window size,必须抓到握手阶段的包,不然就不可以知道协商的 factor 是多少。</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-rwnd-size.png"><img alt="" class="aligncenter size-full wp-image-4797" height="2008" src="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-rwnd-size.png" width="2728" /></a></p><h2>cwnd 查看方式</h2><p>Congestion control 是发送端通过算法得到的一个动态变量,会实时调整,并不会体现在协议的传输数据中。所以要看这个,必须在发送端的机器上看。</p><p>在 Linux 中可以使用 <code>ss -i</code> 选项将 TCP 连接的参数都打印出来。</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-cwnd-ss.png"><img alt="" class="aligncenter size-full wp-image-4799" height="600" src="https://www.kawabangga.com/wp-content/uploads/2022/08/tcp-cwnd-ss.png" width="1466" /></a></p><p>这里展示的单位是 <a href="https://www.cloudflare.com/learning/network-layer/what-is-mss/">TCP MSS.</a> 即实际大小是 1460bytes * 10.</p><h2>Wireshark 分析</h2><p>Wireshark 提供了非常实用的统计功能,可以让你一眼就能看出当前的瓶颈是发生在了哪里。但是第一次打开这个图我不会看,一脸懵逼,也没查到资料要怎么看。好在我<a href="https://github.com/royzhr">同事</a>会,他把我教会了,我在这里记录一下,把你也教会。</p><p>首先,打开的方式如下:</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-open-tcptrace.png"><img alt="" class="aligncenter size-full wp-image-4803" height="1344" src="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-open-tcptrace.png" width="1902" /></a></p><p>然后你会看到如下的图。</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-tcptrace-howtoread.png"><img alt="" class="aligncenter size-full wp-image-4802" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-tcptrace-howtoread.png" width="1728" /></a></p><p>首先需要明确,tcptrace 的图表示的是单方向的数据发送,因为 tcp 是双工协议,两边都能发送数据。其中最上面写了你当前在看的图数据是从 10.0.0.1 发送到 192.168.0.1 的,然后按右下角的按钮可以切换看的方向。</p><p>X轴表示的是时间,很好理解。</p><p>然后理解一下 Y 轴表示的 Sequence Number, 就是 TCP 包中的 Sequence Number,这个很关键。图中所有的数据,都是以 Sequence Number 为准的。</p><p>所以,你如果看到如上图所示,那么说明你看反了,因为数据的 Sequence Number 并没有增加过,说明几乎没有发送过数据,需要点击 Switch Direction。</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-real-dataflow.png"><img alt="" class="aligncenter size-full wp-image-4801" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-real-dataflow.png" width="1728" /></a></p><p>这就对了,可以看到我们传输的 Sequence Number 在随着时间增加而增加。</p><p>这里面有 3 条线,含义如下:</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-tcptrace-read.png"><img alt="" class="aligncenter size-full wp-image-4800" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-tcptrace-read.png" width="1728" /></a></p><p>除此之外,另外还有两种线:</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/tcptrace-sack.png"><img alt="" class="aligncenter size-full wp-image-4804" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/tcptrace-sack.png" width="1728" /></a></p><p>需要始终记住的是 Y 轴是 Sequence Number,红色的线表示 SACK 的线表示这一段 Sequence Number 我已经收到了,然后配合黄色线表示 ACK 过的 Sequence Number,那么发送端就会知道,在中间这段空挡,包丢了,红色线和黄色线纵向的空白,是没有被 ACK 的包。所以,需要重新传输。而蓝色的线就是表示又重新传输了一遍。</p><p>学会了看这些图,我们可以认识几种常见的 pattern:</p><h3>丢包</h3><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-packet-loss.png"><img alt="" class="aligncenter size-full wp-image-4808" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-packet-loss.png" width="1728" /></a></p><p>很多红色 SACK,说明接收端那边重复在说:中间有一个包我没有收到,中间有一个包我没有收到。</p><h3>吞吐受到接收 window size 限制</h3><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/rwnd-too-low.png"><img alt="" class="aligncenter size-full wp-image-4807" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/rwnd-too-low.png" width="1728" /></a></p><p>从这个图可以看出,黄色的线(接收端一 ACK)一上升,蓝色就跟着上升(发送端就开始发),直到填满绿色的线(window size)。说明网络并不是瓶颈,可以调大接收端的 buffer size.</p><h3>吞吐受到网络质量限制</h3><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-cwnd-low.png"><img alt="" class="aligncenter size-full wp-image-4809" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-cwnd-low.png" width="1728" /></a></p><p>从这张图中可以看出,接收端的 window size 远远不是瓶颈,还有很多空闲。</p><p><a href="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-cwnd-low-zoom.png"><img alt="" class="aligncenter size-full wp-image-4810" height="1238" src="https://www.kawabangga.com/wp-content/uploads/2022/08/wireshark-cwnd-low-zoom.png" width="1728" /></a></p><p>放大可以看出,中间有很多丢包和重传,并且每次只发送一点点数据,这说明很有可能是 cwnd 太小了,受到了拥塞控制算法的限制。</p><p> </p><p>本文中用到的抓包文件可以从这里下载(credit: <a href="https://www.youtube.com/watch?v=yUmACeSmT7o">https://www.youtube.com/watch?v=yUmACeSmT7o</a>):</p><ol><li><a href="https://www.cloudshark.org/captures/f5eb7c033728">https://www.cloudshark.org/captures/f5eb7c033728</a></li><li><a href="https://www.cloudshark.org/captures/c967765aef38">https://www.cloudshark.org/captures/c967765aef38</a></li></ol><p>其他的一些参考资料:</p><ol><li><a href="https://www.stackpath.com/edge-academy/what-is-cwnd-and-rwnd/">https://www.stackpath.com/edge-academy/what-is-cwnd-and-rwnd/</a></li><li><a href="https://www.baeldung.com/cs/tcp-flow-control-vs-congestion-control">https://www.baeldung.com/cs/tcp-flow-control-vs-congestion-control</a></li><li><a href="https://www.cs.cornell.edu/courses/cs4450/2020sp/lecture21-congestion-control.pdf">https://www.cs.cornell.edu/courses/cs4450/2020sp/lecture21-congestion-control.pdf</a></li><li><a href="https://www.mi.fu-berlin.de/inf/groups/ag-tech/teaching/2011-12_WS/L_19531_Telematics/08_Transport_Layer.pdf">https://www.mi.fu-berlin.de/inf/groups/ag-tech/teaching/2011-12_WS/L_19531_Telematics/08_Transport_Layer.pdf</a></li><li><a href="https://wiki.aalto.fi/download/attachments/69901948/TCP-CongestionControlFinal.pdf">https://wiki.aalto.fi/download/attachments/69901948/TCP-CongestionControlFinal.pdf</a></li><li><a href="https://paulgrevink.wordpress.com/2017/09/08/about-long-fat-networks-and-tcp-tuning/">https://paulgrevink.wordpress.com/2017/09/08/about-long-fat-networks-and-tcp-tuning/</a></li></ol><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-38629829008905359492022-11-19T19:10:00.000+08:002022-12-01T11:01:17.019+08:00什么是CN2 IPLC BGP线路?来自:<br /><a href="https://www.triadprogram.com/what-is-cn2-iplc-bgp/">https://www.triadprogram.com/what-is-cn2-iplc-bgp</a><br /><br />在选择翻墙服务器的时候,相信很多人都看到过CN2 IPLC BGP线路,这些都是专线的称呼,跨国公司、银行、数据中心使用的就是这类专线。但是,这些名字对于新手来说根本不理解是什么意思,怎么来做选择呢?本文来对CN2 GIA线路、IPLC线路和BGP线路做一些介绍,让您大概知道选择那种线路更适合你。<br />中国三大网络运营商的线路中国电信的宽带线路是最贵的、也是最好的。中国电信有两条线路,拥有2张全国骨干网:中国公用计算机互联网(CHINANET /CHINA163)和中国电信下一代承载网(ChinaNet Next Carrying Network,简称CN2)。<br />中国联通,拥有2张全国骨干网:中国网通互联网(CHINA169)和旧中国网通互联网(CNCNET)。<br />中国移动,拥有1张全国骨干网:中国移动互联网(CMNET),于2000年1月组建。<br /><br />这篇文章,主要是以中国电信为例,介绍网络线路。<br />中国公用计算机互联网(163 骨干网)<br /><br />相对 CN2 而言,有的人又习惯称 163 骨干网为 CN1,163 网是中国电信建设的最早的一个网络,它为超过 1 亿的中国电信用户承载包括连往境外的、普通质量的互联网业务,也就是我们通常安装的电信宽带。作为电信用户,如果在晚上连接境外网络总是感觉卡顿,丢包高,99.99%的原因都是因为走的是这条线路。大家一起挤,线路就堵塞了。<br /><br />其实,不但是电信宽带,包括:移动的宽带、联通的、有线网络的,到了晚上6、7点钟,都会变慢,而且比电信宽带更慢。<br />CN2<br /><br />CN2,即“ChinaNet Next Carrying Network(ChinaNet 的下一代承载网络)”,在 2005 年投入使用,最初架设的目标,是提供一个拓扑合理,架构先进,建设科学,用于满足未来 10–20 年替代 163 网成为未来新骨干网的网络(这个 flag 还未实现),CN2 网络能够同时承载语音、数据、视频、全球互联等业务,尤其是全球互联方面,相对于 163 网而言,CN2 网络的低丢包、低延时、轻负载,让众多用户趋之若鹜。<br /><br />据统计,在中国电信的总网络连接中,163 网络承担了 85% 的网络流量,其余的 15% 流量,由 CN2 网络承担。<br /><br />外网走专线的中国电信政企网,中国电信还针对普通宽带用户,推出过氮气瓶,或称为“电信精品网”的服务,但不知道何种原因(疑似超售),这种服务现在不提供了。简单来讲,就是不管境外网络节点是普通线路,还是专门推出的CN2 网络优化版(仅针对中国大陆的通信),让在境内用户访问境外网络时,统一直接并入到 CN2 网络。回国或出国,必定经过北京/上海/广州。<br /><br />进出口路由路径,分为三个品级:163 网(CN1);<br />CN2 GT(Global Transfer 又称半程 CN2 );<br />CN2 GIA(Global Internet Access 又称纯 CN2/全程 CN2);<br /><br />网络路由路径遵守固定路径/边界网关协议(BGP)。在高峰期会有策略性丢包减少对骨干网的负载。虽然出口宽带总量最大,且人均出口带宽排行第二,但电信 163 网连接国际网络,会在高峰时段,在路由出海前的最后一跳,根据优先级,策略性地人为丢包,以减轻对主网的负担(QOS)。这让普通电信用户糟糕的外网访问质量雪上加霜。<br /><br />中国电信的 163 网络,一般会经过市级 → 省级 → 国际出口 → 境外接入点 AS(自治路由协议) 号为 4134 的路由节点,这些路由节点的 IP 地址开头一律是 “202.97..”,全程不会经过 CN2 网络节点。<br /><br />163 网络国内之间互相访问基本上不存在性能瓶颈,只有在国际出口才会发生拥堵。仅统计国际网络的访问质量,163 网络全天的丢包率在 5% ~ 10%左右,如果在夜晚间高峰期(UTC+8 18:00 至 23:00 时),丢包率可达到 15% 以上。会经过更多的路由数量。<br /><br />163 网(民用电信宽带都属于这种),是全中国用户数量最大,访问国际网络体验最差的线路,国外网站用浏览器打开需要转圈等上个十来分钟,PC、PS、Xbox 连接外服下载极慢(十几 kb /秒),玩游戏卡顿(丢包)等现象屡见不鲜。<br /><br />除了例如自“云上贵州”落地中国后,iOS /Mac 用户连接 app store、iCloud 速度迟缓的情况大有改观这样的案例,所有 163 网用户在访问没有在中国大陆境内(不包含港澳台)布设本地服务器或 CDN 加速服务的境外网站或网络服务,被迫忍受极其缓慢的速度等现象,在未来 10 – 20 年之内无法缓解。<br /><br />某国家级别大型网关,利用机器学习和人工干预等手段,会实时对境内和境外通信的互联网流量,做深度包检测、数据请求头分析、带高危协议特征流量的干扰和阻断等工作,从而保障中华人民共和国互联网通信的安全,代价是损耗一部分外网通信的性能(存疑)。<br /><br />不要想当然地以为,某 VPS 距离接入网络的地域蛮近的(上海 → 日本 /广州 → 新加坡等),延迟和掉包情况一定不大,在该 VPS 商家有大量用户访问和绕路以及晚高峰情况下,163 网络的劣化程度比你想象的要严重得多:如从中国 → 新加坡(godaddy 新加坡虚拟主机),实际上是从中国 → 美国 → 新加坡),单程环两次北太平洋,看你怕不怕。<br />网络的线路的选择–CN2 IPLC BGP线路<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/whatisbgp.jpg.webp" /><br /><br /><br />访问国际互联网的网络线路,分为公网和内网(独享线路),99%的网络线路使用的是公网线路。而且是采用合租的方式,一般都是hkt(香港电讯),这样合租会有堵车的情况,肯定不如独享线路。<br /><br />而我们通常购买的机场订阅—节点多的一般都是合租线路,节点少的一般都是独享,因为独享成本高。合租线路一般是不限流量或者流量很多而且不限带宽,所以在高峰期会堵车,且不稳定。这就是为什么有些机场貌似便宜,而且节点多、流量多的原因。<br />什么是IPLC/IEPL?–如何判断是不是走内网的线路?<br /><br />IPLC(点对点的内网专线),就是内网线路(独享线路)了。其原理就是一台服务器在国外,一台服务器在国内,所有的数据都是通过这两台服务器内网传输的。IEPL和IPLC差不多,对于我们普通用户知道它们是差不多的技术就好!<br /><br />IPLC的优势就是不过GFW(所以不会存在被封的情况),因为是内网,防火墙检测不到,所以我们在国内访问的就是国内的服务器,然后国内的服务器走内网传输到国外的服务器,通过代理帮我们上网。所以,IPLC速度快且稳定,不会受高峰期、敏感期影响。但是就是成本高,基本上是按照流量去卖的,所以IPLC限制用户流量,并且收费较贵。<br /><br />还有一些高端机场,增加的BGP(就是中转或者叫中继,大陆全网优化),其原理也是国内一台服务器,国外一台服务器,但是与IPLC不同的是—走的是公网。但是使用了BGP,对线路的优化是特别明显,但是增加BGP服务器是花钱的,这也就增加了成本。所以一般不会给香港这么近的节点增加BGP服务器。一般有BGP的都会标识出来,因为这也是一个卖点,购买机场订阅的时候要看清楚。<br /><br />总结下来,最好的选择排名是: 使用IPLC内网专线 > 公网+BGP中转(中继)> 公网线路独享 > 公网线路合租。其实,IPLC/IEPL内网专线并没那么重要,重要的是良好的使用体验,普通的BGP隧道中转也很好用。另外,专线的国内入口也需要使用BGP/CN2机房中转,否则在国内用户体验肯定大打折扣。<br />v2ray机场–BGP专线推荐<br /><br />希望以上内容可以“缓解”各位小伙伴对于使用V2Ray 的疑虑,这里我推荐两个非常不错且稳定的V2Ray 机场–极客云、速云梯(他们属于同一个商家),价格都不贵。可以试用,不好用退款就是了,可以按月购买,不怕机场跑路。<br /><br />极客云机场架设了很多年,就算最紧张的时刻,他们的网站也都可以登陆。而反观其他机场,很多都要经常更换地址。其实这也可以看出机场的实力。另外,就是看他们的用户群的大小。注册后加入他们的电报群Telegram,就可以看到他们的用户数量了。<img src="https://www.triadprogram.com/wp-content/uploads/2021/03/%E6%9E%81%E5%AE%A2%E4%BA%91Telegram%E5%AE%A2%E6%88%B7%E7%BE%A4.png" /><br /><br /><br />我加入的这个电报群,是极客云的其中一个群,人不少。为什么要混进去?其实就是看看人气怎么样。机场的服务器都是租用的,他们都是按年付费,这是他们的交易成本。机场✈️手头的客户越多,他们就可以租借更多的服务器,提供更好的服务,“跑路”的概率也就越低。<br /><br />好吧看看如何购买、以及注册的步骤。很简单,具体如下:<br /><br />注册账号<br /><br />点击<a href="https://www.triadprogram.com/jike">极客云</a>网站,看到的就是注册的页面,用你的邮箱注册个号,就可以登陆进去:<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/02/Untitled-1024x861.png.webp" /><br /><br /><br />进去后第一时间就看到商家的产品,这里就看你具体需要了。如果是试用,就选最便宜的。速度满意了,再考虑别的增值服务。支付宝、微信都可以付款。<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2022/09/%E6%9E%81%E5%AE%A2%E4%BA%91%E5%A5%97%E9%A4%90-1024x618.png.webp" /><br /><br /><br />极客云也不断调整了价格,涨点价不要紧,如果能保证服务,也许是好事。<br /><br />v2ray配置<br /><br />软件下载和设置,商家主页都有说明,下载了软件,添加订阅,更新就可以用了。<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/02/Untitled-2-2-1024x531.png.webp" /><br /><br /><br />订阅在网页的左边“个人中心”,进去就有链接了。订阅,其实就是一组代理服务器的地址,讲这些地址copy到V2Ray 客户端然后“更新“,就可以获取最新的服务器地址。如果第一次试用,可以参考下面👇的详细设置说明:<br />v2ray软件内核<br /><br />v2ray包括:内核和图形客户端。内核就是翻墙的核心,图形客户端是为了我们用户方便使用。<br /><br />v2ray内核是一个开源软件,安全性是非常有保证的,因为它公开源码,大神们都是火眼金睛,有什么后门一早就被发现了。v2ray的内核大小一般20–40M。下面是内核的截图。内核是使用go语言编写的,加上用户界面,总容量不会超过100M。超过100M的,里面一定加料。<img src="https://www.triadprogram.com/wp-content/uploads/2021/03/v2ray-64%E4%BD%8D%E5%86%85%E6%A0%B8%E5%A4%A7%E5%B0%8F.png" /><br /><br /><br />下载v2ray的内核<a href="https://github.com/v2ray/v2ray-core/releases">一定要去官网</a>,第一次去GitHub的朋友可以觉得“找不到北”,其实这地方不是程序员专属,里面什么都有。GitHub 最适合多人全球合作,内容详尽,“图文并茂”!所以,没啥,工具就是用的,而且一定不难用。<br /><br />废话一轮,进入正题:<a href="https://github.com/v2ray/v2ray-core/releases">进去官网</a>看到的是v2ray内核的“首页”,V4.31.0的链接是最新版本号,按下去就进入下一个环节:<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/v2ray%E5%86%85%E6%A0%B8%E4%B8%8B%E8%BD%BD%E9%A6%96%E9%A1%B5-1024x388.png.webp" /><br /><br /><br />进入下一个页面,还没完,它要讲一轮废话,说明这个内核的功能、注意事项等。程序员都这样,看最后就行,按下那个链接就可以进入下载页面。<img src="https://www.triadprogram.com/wp-content/uploads/2021/03/v2ray%E5%86%85%E6%A0%B8%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5.png" /><br /><br /><br />下载页面的最下面才是,各种系统的对应版本,根据自己的系统下载吧。吐槽一下,为什么不把下载链接放在最上面呢,一轮找,这提醒一下:GitHub 下载文件链接多数都在最下面!<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/%E4%B8%8D%E5%90%8C%E7%B3%BB%E7%BB%9F%E7%9A%84v2ray%E5%86%85%E6%A0%B8%E4%B8%8B%E8%BD%BD-732x1024.png.webp" /><br /><br />v2ray客户端<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/qv2ray.png.webp" /><br /><br /><br />v2ray有很多自定义的地方,如果不是老手,设置起来很烦。所以就出现了很多V2Ray 图形客户端。这里推荐一个v2ray的客户端–<a href="https://github.com/Qv2ray/Qv2ray">Qv2ray</a>,里面包含了内核,如果哪天这个客户端也不包括内核,就按照后面的说明去配置,过程也很简单的。<br /><br /><a href="https://github.com/Qv2ray/Qv2ray">Qv2ray</a>是用c++语言编写的,不懂编程不要紧,知道用C语言编写的程序都是好东西就行。Qv2ray速度很快,我再macOS、windows都是安装这个客户端,然后贴上v2ray机场拷贝的订阅,就能愉快翻墙了。<img src="https://www.triadprogram.com/wp-content/uploads/2021/03/Qv2ray%E4%B8%BB%E9%A1%B5-1.png" /><br /><br /><br />进去后就可以看到不同操作系统的Qv2ray客户端了,我用windows版的来说说明一下主要安装过程。<img src="https://www.triadprogram.com/wp-content/uploads/2021/03/Qv2ray%E4%B8%8B%E8%BD%BD%E9%A1%B5%E9%9D%A2.png" /><br /><br />v2ray windows客户端<br /><br />下载好Qv2ray的windows版,双击就一路默认下去就安装好了:<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/Qv2ray%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.png.webp" /><br /><br /><br />安装完成,我们来到Qv2ray的设置首页,添加你购买的机场订阅和添加最新的v2ray内核都在这里:<img src="https://www.triadprogram.com/wp-content/uploads/2021/03/Qv2ray%E8%AE%BE%E7%BD%AE%E9%A6%96%E9%A1%B5.png" /><br /><br /><br />我们先来添加机场订阅,订阅其实就是一组服务器的地址,通过客户端加密转换成IP地址。按照下图,最后按更新订阅,服务器地址就不出现再“组列表”中了。我们接着往下看。。。<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/Qv2ray%E6%B7%BB%E5%8A%A0%E8%AE%A2%E9%98%85-1024x633.png.webp" /><br /><br /><br />更新订阅后,我们就可以测试这组服务器,主要是选个最快的,一般离我们物理距离最近的也就是最快的。对着某个服务器鼠标右键,就可以弹出选单:<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/Qv2ray%E8%AE%A2%E9%98%85%E6%9B%B4%E6%96%B0%E5%90%8E%E7%9A%84%E8%AE%BE%E7%BD%AE.png.webp" /><br /><br />V2Ray 内核设置<br /><br />连接如果不成功,那就是内核没有设置好。Qv2ray是自带内核的,所以下面部分只是以防万一,另外,也给各位有个印象:如果用其他不带v2ray内核的客户端,可以参考如下设置:<br /><br />首先,把上面👆下载的v2ray内核文件,解压到目录:注意⚠️其中v2ray.exe就是核心:<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/Qv2ray%E5%86%85%E6%A0%B8%E6%96%87%E4%BB%B6.png.webp" /><br /><br /><br />然后,进入Qv2ray“首选项”,注意⚠️选择你的安装目录:<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/Qv2ray%E5%86%85%E6%A0%B8%E8%AE%BE%E7%BD%AE.png.webp" /><br /><br /><br />注意⚠️第一“选择”是选“v2ray.exe”文件,第二个“选择“是v2ray目录,最后“检查v2ray核心设置“。Qv2ray成功后会弹出“成功“窗口:<img src="https://www.triadprogram.com/wp-content/webp-express/webp-images/uploads/2021/03/Qv2ray%E5%86%85%E6%A0%B8%E8%AE%BE%E7%BD%AE%E6%88%90%E5%8A%9F.png.webp" /><br /><br /><br />到此,Qv2ray内核的设置就基本成功,“首选项”中还有很多高级功能,一律可以先不管。以上设置,基本可以满足大部分的翻墙需求。<br /><br /> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected]:blogger.com,1999:blog-5500297126185736776.post-78613019717415829312022-11-19T18:56:00.006+08:002022-11-22T11:47:26.383+08:00Z-Library两名创始人怎么被追踪的?FBI直接找谷歌和亚马逊拿用户数据 <span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span><span style="color: #333333;">来自 </span><a href="https://www.landiannews.com/archives/96076.html?utm_sources=ourl.co&utm_medium=social&utm_campaign=none" target="_blank">https://www.landiannews.com/archives/96076.html?utm_sources=ourl.co&utm_medium=social&utm_campaign=none</a><p>昨天早上美国司法部检察长办公室发布新闻稿称已经逮捕<a href="https://www.landiannews.com/archives/96062.html" rel="noreferrer noopener" target="_blank">全球最大的电子书盗版网站 Z-Library 的两名创始人</a>,这两人都是俄罗斯公民,居住在南美洲阿根廷的科尔多瓦省科尔多瓦市。</p><p>Z-Library 已经运营十多年,按理说美帝要是下手的话其实早就会动手了,至于为什么到现在才动手确实是个迷。</p><p>在逮捕这两位创始人方面 FBI 也下了不少功夫,包括派 FBI 探员在 Z-Library 卧底,因此美国司法部应该早就开始调查 Z-Library 了。</p><p>在细节方面如何识别创始人的身份也是难题,但从域名方面下手其实可以找到不少信息,FBI 就从域名顺藤摸瓜发现 Aton Napolsky (男) 注册了 Gmail 邮箱,还使用亚马逊礼品卡买过东西。</p><p>于是 FBI 直接找法院申请搜查令要求谷歌和亚马逊配合调查,在搜查令加持下谷歌供出了一个俄罗斯手机号码尾号是 2458,这个号码注册了 napolsky7@gmail.com 和 donation.zlib@gmail.com 邮箱。</p><p><a href="https://img.lancdn.com/landian/2022/11/96076.png" rel="noreferrer noopener" target="_blank"><img alt="96076.png" src="https://img.lancdn.com/landian/2022/11/96076.png" /><br /></a></p><p>亚马逊的数据则显示这个号码注册了两个账号,号码对应的账单地址与 Gmail 里提供的信息基本相同,因此可以断定这是一个人。</p><p>继续查询这个账号,发现有几个订单是通过亚马逊礼品卡支付的,调查显示这些礼品卡是 Z-Library 的用户捐赠的。其中一个账户使用的是 amazon@bookmail.org 邮箱,另一个账户使用 napolsky7@gmail.com 注册。</p><p>然后亚马逊 AWS 数据显示,这些邮箱与 Z-Library 有关联,Z-Library 使用 @bookmail.org 向用户发送通知和电子书,事后 FBI 卧底也证实了这点。</p><p>FBI 还从谷歌和亚马逊的数据里找到了另一名创始人 Valeriia Ermakova 的信息 (女),主要还是电子邮件地址和购物记录,大多数购物记录显示 Valeriia Ermakova 在亚马逊购买化妆品和衣服。</p><p>在这里 FBI 还获取了信用卡信息,其实已经确定使用这些邮箱的人的真实身份。</p><p>最后就是检查这些网络痕迹的 IP 地址,尽管两人大部分账单地址位于俄罗斯圣彼得堡,但 FBI 显然是没法在俄罗斯抓人的,不过发现两人位于阿根廷时,美国司法机构直接让阿根廷政府逮捕了两人。</p><p>总体来说这两名创始人应该没考虑过自己会被抓,毕竟已经运营十多年都没翻车,既然如此也没必要刻意隐瞒自己的真实身份,所以一切网络痕迹都可以归因到个人并没有像本拉登那样躲在深山里直接断绝一切网络连接,所以 FBI 追查的时候其实难度应该也不是非常大。</p><p>最后还有一个值得注意的是,知名盗版科研期刊网站 Sci-Hub 创始人此前也被 FBI 查了,Sci-Hub 致力于绕过各类期刊网站的付费墙,为用户免费提供各类科研期刊。</p><p>按谷歌的处理流程,当执法机构拿着搜查令要求谷歌配合并提供用户数据时,谷歌必须遵守,但谷歌也会通知用户自己被 “出卖”,苹果也有类似的处理流程。</p><p>去年 5 月起创始人收到苹果发送的电子邮件,苹果称该公司在 2019 年 FBI 就拿着搜查令让苹果提供其信息,苹果只能遵守要求,而且由于搜查令的原因,苹果也只能在事后很久才通知用户。</p><p>今年 3 月 Sci-Hub 创始人又收到谷歌通知,谷歌也表示 FBI 查了她的数据,谷歌也是事后才发邮件通知。谷歌称由于法院要求他们只能延迟发通知。</p><p><strong>目前 Sci-Hub 还能访问,但两起事件串联起来就可以知道 FBI 似乎早就盯上了这些盗版网站,只是潜伏了很久才决定动手。</strong></p><span face=""hiragino sans gb" , "microsoft yahei" , "arial" , sans-serif" style="background-color: white; color: #333333; font-size: 16px; line-height: 24px;"></span> <div class="blogger-post-footer">翻墙技术博客<a href="http://www.chinagfw.org/2013/09/blog-post.html">订阅地址及社交帐号</a></div>pompeihttp://www.blogger.com/profile/[email protected] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment