<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>影子屋</title><link>https://blog.bgme.me/</link><description>随手记一些小事。</description><atom:link href="https://blog.bgme.me/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>zh_cn</language><copyright>Contents © 2024 &lt;a href="mailto:i@bgme.me"&gt;无影人&lt;/a&gt; 
&lt;a rel="license noopener nofollow" target="_blank" href="http://creativecommons.org/licenses/by-sa/4.0/" class="ui image" title="如无特别说明，本站文章均遵循 CC BY-SA 4.0 协议，转载请注明作者及出处。"&gt;
&lt;img alt="Creative Commons Attribution-ShareAlike 4.0 International License" src="/license.png"&gt;
&lt;/a&gt;
</copyright><lastBuildDate>Wed, 24 Apr 2024 12:02:13 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>关于回国 VPN 应用「穿梭」你可能不知道的事实</title><link>https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;我写这篇博文只是想记录一下自己从想法到探寻，再到探寻结果的整个过程。&lt;/p&gt;
&lt;p&gt;在这个探寻的过程中，我发现了一些既在意料之中，又在意料之外的事实，而这些事实我个人认为有必要写篇博文进行记录。&lt;/p&gt;
&lt;p&gt;最后，对于这些事实，我不做任何解读，也不会提出任何建议。&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;hr class="docutils"&gt;
&lt;section id="section-1"&gt;
&lt;h2&gt;缘起&lt;/h2&gt;
&lt;p&gt;今天照例刷 Mastodon 时间轴时，有一条嘟文从我眼前飘过『求推荐便宜好用（免费也可以因为就几个月里用一小时……）的从国外翻回国内的vpn谢谢』。&lt;/p&gt;
&lt;p&gt;看到这条嘟文，我的第一个想法是，这很简单呀，我这就有现成的 Mesh VPN 网络（nebula 网络），只要加进网络，再在国内端安装上代理软件，不就OK了吗？&lt;/p&gt;
&lt;p&gt;但又立刻想到，这种做法对于国内节点的人风险非常大，万一对方发布什么中国政府不喜欢的话，你就有可能被顺着 IP 找上门，风险太高了。
想要这么干，必须是相当熟悉与了解的友人才可以。&lt;/p&gt;
&lt;p&gt;就在我胡思乱想时，原嘟文下已经有了回复，回复中提到「穿梭」这个应用。&lt;/p&gt;
&lt;p&gt;这一下子吸引了我的注意，原来已经有这样的回国 VPN 呀。
但是他们是怎么做的？他们不担心用户发布什么内容，然后被警察找上门吗？他们是怎么控制风险的？
他们有多少服务器？他们的中国大陆的服务器节点 IP 是什么？&lt;/p&gt;
&lt;p&gt;带着这样的好奇，我开始了自己的探寻之旅。&lt;/p&gt;
&lt;/section&gt;
&lt;section id="section-2"&gt;
&lt;h2&gt;探寻&lt;/h2&gt;
&lt;p&gt;使用「穿梭」在搜索引擎中搜索，顺利的找到该应用的 &lt;a class="reference external" href="https://play.google.com/store/apps/details?id=com.fobwifi.normal"&gt;Google Play 页面&lt;/a&gt;与 &lt;a class="reference external" href="https://apps.apple.com/us/app/%E7%A9%BF%E6%A2%ADtransocks-%E6%B5%B7%E5%A4%96%E5%8D%8E%E4%BA%BA%E7%88%B1%E7%94%A8vpn/id1345035954"&gt;iOS APP Store 页面&lt;/a&gt;。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/google_play.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/google_play.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/google_play.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;Google Play 页面&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/app_store.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/app_store.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/app_store.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;APP Store 页面&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;首先吸引我注意的是该应用超长的寿命。
通过 iOS APP Store 页面的 Version History，可以看到，该应用于2021年8月就已经上架 iOS APP Store，距今已有近3年时间了。
对于跑路不断的机场而言，稳定经营3年已经算是很长寿了。&lt;/p&gt;
&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/app_store_version_histroy.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/app_store_version_histroy.png"&gt;
&lt;p&gt;然后便是Google Play 页面右侧 App Support Address 栏的那个中国地址：&lt;code class="docutils literal"&gt;Tianfu Avenue 866, Huayang Street, &lt;span class="pre"&gt;Hi-Tech&lt;/span&gt; Zone, Cheng Du, Sichuan,China&lt;/code&gt;。
以及公司名 &lt;code class="docutils literal"&gt;Chengdu Fobwifi Networks Technology LLC&lt;/code&gt; 中的 &lt;code class="docutils literal"&gt;Chengdu&lt;/code&gt;。&lt;/p&gt;
&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/google_play_app_support.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/google_play_app_support.png"&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;在 Google Play 页面与 iOS APP Store 页面分别找到了两个官网地址： &lt;a class="reference external" href="https://www.transocks.com/"&gt;https://www.transocks.com/&lt;/a&gt;、&lt;a class="reference external" href="https://transocks.org/"&gt;https://transocks.org/&lt;/a&gt; 。&lt;/p&gt;
&lt;p&gt;打开后，页面一致。其中 &lt;code class="docutils literal"&gt;www.transocks.com&lt;/code&gt; 已被 GFW 屏蔽，屏蔽方式 DNS 投毒。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/webpage.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/webpage.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/webpage.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;官网网页&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;附手查询两域名 wohis，可以发现 &lt;code class="docutils literal"&gt;transocks.com&lt;/code&gt; 注册于2014年8月，&lt;code class="docutils literal"&gt;transocks.org&lt;/code&gt; 注册于2019年7月。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-1" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-1" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-1"&gt;&lt;/a&gt;$ whois transocks.com
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-2" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-2" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-2"&gt;&lt;/a&gt;    Domain Name: TRANSOCKS.COM
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-3" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-3" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-3"&gt;&lt;/a&gt;    Registry Domain ID: 1871026402_DOMAIN_COM-VRSN
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-4" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-4" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-4"&gt;&lt;/a&gt;    Registrar WHOIS Server: grs-whois.hichina.com
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-5" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-5" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-5"&gt;&lt;/a&gt;    Registrar URL: http://www.net.cn
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-6" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-6" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-6"&gt;&lt;/a&gt;    Updated Date: 2022-08-04T02:08:37Z
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-7" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-7" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-7"&gt;&lt;/a&gt;    Creation Date: 2014-08-14T07:10:34Z
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-8" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-8" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-8"&gt;&lt;/a&gt;    Registry Expiry Date: 2027-08-14T07:10:34Z
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-9" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-9" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-9"&gt;&lt;/a&gt;    Registrar: Alibaba Cloud Computing (Beijing) Co., Ltd.
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-10" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-10" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-10"&gt;&lt;/a&gt;    Registrar IANA ID: 420
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-11" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-11" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-11"&gt;&lt;/a&gt;    Registrar Abuse Contact Email: DomainAbuse@service.aliyun.com
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-12" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-12" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-12"&gt;&lt;/a&gt;    Registrar Abuse Contact Phone: +86.95187
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-13" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-13" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-13"&gt;&lt;/a&gt;    Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-14" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-14" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-14"&gt;&lt;/a&gt;    Name Server: DAHLIA.NS.CLOUDFLARE.COM
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-15" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-15" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-15"&gt;&lt;/a&gt;    Name Server: SETH.NS.CLOUDFLARE.COM
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-16" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-16" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-16"&gt;&lt;/a&gt;    DNSSEC: unsigned
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-17" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-17" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-17"&gt;&lt;/a&gt;    URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-18" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-18" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-18"&gt;&lt;/a&gt;&amp;gt;&amp;gt;&amp;gt; Last update of whois database: 2024-03-12T15:16:30Z &amp;lt;&amp;lt;&amp;lt;
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-19" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-19" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-19"&gt;&lt;/a&gt;
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-20" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-20" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-20"&gt;&lt;/a&gt;...
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-21" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-21" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-21"&gt;&lt;/a&gt;
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-22" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-22" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-22"&gt;&lt;/a&gt;Domain Name: transocks.com
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-23" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-23" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-23"&gt;&lt;/a&gt;Registry Domain ID: 1871026402_DOMAIN_COM-VRSN
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-24" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-24" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-24"&gt;&lt;/a&gt;Registrar WHOIS Server: grs-whois.hichina.com
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-25" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-25" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-25"&gt;&lt;/a&gt;Registrar URL: http://www.net.cn
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-26" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-26" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-26"&gt;&lt;/a&gt;Updated Date: 2022-08-04T02:08:37Z
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-27" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-27" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-27"&gt;&lt;/a&gt;Creation Date: 2014-08-14T07:10:34Z
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-28" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-28" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-28"&gt;&lt;/a&gt;Registrar Registration Expiration Date: 2027-08-14T07:10:34Z
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-29" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-29" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-29"&gt;&lt;/a&gt;Registrar: Alibaba Cloud Computing (Beijing) Co., Ltd.
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-30" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-30" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-30"&gt;&lt;/a&gt;Registrar IANA ID: 420
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-31" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-31" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-31"&gt;&lt;/a&gt;Reseller:
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-32" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-32" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-32"&gt;&lt;/a&gt;Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-33" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-33" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-33"&gt;&lt;/a&gt;Registrant City:
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-34" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-34" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-34"&gt;&lt;/a&gt;Registrant State/Province: si chuan
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-35" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-35" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-35"&gt;&lt;/a&gt;Registrant Country: CN
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-36" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-36" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-36"&gt;&lt;/a&gt;Registrant Email:https://whois.aliyun.com/whois/whoisForm
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-37" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-37" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-37"&gt;&lt;/a&gt;Registry Registrant ID: Not Available From Registry
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-38" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-38" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-38"&gt;&lt;/a&gt;Name Server: DAHLIA.NS.CLOUDFLARE.COM
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-39" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-39" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-39"&gt;&lt;/a&gt;Name Server: SETH.NS.CLOUDFLARE.COM
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-40" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-40" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-40"&gt;&lt;/a&gt;DNSSEC: unsigned
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-41" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-41" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-41"&gt;&lt;/a&gt;Registrar Abuse Contact Email: DomainAbuse@service.aliyun.com
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-42" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-42" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-42"&gt;&lt;/a&gt;Registrar Abuse Contact Phone: +86.95187
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-43" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-43" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-43"&gt;&lt;/a&gt;URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
&lt;a id="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-44" name="rest_code_86b8ba003fd9405d9f546d4a973f4fdd-44" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_86b8ba003fd9405d9f546d4a973f4fdd-44"&gt;&lt;/a&gt;&amp;gt;&amp;gt;&amp;gt;Last update of WHOIS database: 2024-03-12T15:16:41Z &amp;lt;&amp;lt;&amp;lt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-1" name="rest_code_40075914dd274148ad7e05f55843843c-1" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-1"&gt;&lt;/a&gt;$ whois transocks.org
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-2" name="rest_code_40075914dd274148ad7e05f55843843c-2" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-2"&gt;&lt;/a&gt;Domain Name: transocks.org
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-3" name="rest_code_40075914dd274148ad7e05f55843843c-3" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-3"&gt;&lt;/a&gt;Registry Domain ID: 1962315ed0334b13a32069a155ee1aa1-LROR
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-4" name="rest_code_40075914dd274148ad7e05f55843843c-4" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-4"&gt;&lt;/a&gt;Registrar WHOIS Server: http://whois.namesilo.com
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-5" name="rest_code_40075914dd274148ad7e05f55843843c-5" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-5"&gt;&lt;/a&gt;Registrar URL: http://www.namesilo.com
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-6" name="rest_code_40075914dd274148ad7e05f55843843c-6" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-6"&gt;&lt;/a&gt;Updated Date: 2024-03-09T05:24:13Z
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-7" name="rest_code_40075914dd274148ad7e05f55843843c-7" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-7"&gt;&lt;/a&gt;Creation Date: 2019-07-30T18:25:14Z
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-8" name="rest_code_40075914dd274148ad7e05f55843843c-8" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-8"&gt;&lt;/a&gt;Registry Expiry Date: 2025-07-30T18:25:14Z
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-9" name="rest_code_40075914dd274148ad7e05f55843843c-9" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-9"&gt;&lt;/a&gt;Registrar: Namesilo, LLC
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-10" name="rest_code_40075914dd274148ad7e05f55843843c-10" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-10"&gt;&lt;/a&gt;Registrar IANA ID: 1479
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-11" name="rest_code_40075914dd274148ad7e05f55843843c-11" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-11"&gt;&lt;/a&gt;Registrar Abuse Contact Email: abuse@namesilo.com
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-12" name="rest_code_40075914dd274148ad7e05f55843843c-12" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-12"&gt;&lt;/a&gt;Registrar Abuse Contact Phone: +1.4805240066
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-13" name="rest_code_40075914dd274148ad7e05f55843843c-13" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-13"&gt;&lt;/a&gt;Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-14" name="rest_code_40075914dd274148ad7e05f55843843c-14" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-14"&gt;&lt;/a&gt;Registry Registrant ID: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-15" name="rest_code_40075914dd274148ad7e05f55843843c-15" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-15"&gt;&lt;/a&gt;Registrant Name: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-16" name="rest_code_40075914dd274148ad7e05f55843843c-16" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-16"&gt;&lt;/a&gt;Registrant Organization: See PrivacyGuardian.org
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-17" name="rest_code_40075914dd274148ad7e05f55843843c-17" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-17"&gt;&lt;/a&gt;Registrant Street: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-18" name="rest_code_40075914dd274148ad7e05f55843843c-18" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-18"&gt;&lt;/a&gt;Registrant City: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-19" name="rest_code_40075914dd274148ad7e05f55843843c-19" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-19"&gt;&lt;/a&gt;Registrant State/Province: AZ
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-20" name="rest_code_40075914dd274148ad7e05f55843843c-20" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-20"&gt;&lt;/a&gt;Registrant Postal Code: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-21" name="rest_code_40075914dd274148ad7e05f55843843c-21" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-21"&gt;&lt;/a&gt;Registrant Country: US
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-22" name="rest_code_40075914dd274148ad7e05f55843843c-22" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-22"&gt;&lt;/a&gt;Registrant Phone: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-23" name="rest_code_40075914dd274148ad7e05f55843843c-23" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-23"&gt;&lt;/a&gt;Registrant Phone Ext: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-24" name="rest_code_40075914dd274148ad7e05f55843843c-24" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-24"&gt;&lt;/a&gt;Registrant Fax: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-25" name="rest_code_40075914dd274148ad7e05f55843843c-25" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-25"&gt;&lt;/a&gt;Registrant Fax Ext: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-26" name="rest_code_40075914dd274148ad7e05f55843843c-26" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-26"&gt;&lt;/a&gt;Registrant Email: Please query the RDDS service of the Registrar of Record identified in this output for information on how to contact the Registrant, Admin, or Tech contact of the queried domain name.
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-27" name="rest_code_40075914dd274148ad7e05f55843843c-27" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-27"&gt;&lt;/a&gt;Registry Admin ID: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-28" name="rest_code_40075914dd274148ad7e05f55843843c-28" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-28"&gt;&lt;/a&gt;Admin Name: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-29" name="rest_code_40075914dd274148ad7e05f55843843c-29" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-29"&gt;&lt;/a&gt;Admin Organization: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-30" name="rest_code_40075914dd274148ad7e05f55843843c-30" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-30"&gt;&lt;/a&gt;Admin Street: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-31" name="rest_code_40075914dd274148ad7e05f55843843c-31" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-31"&gt;&lt;/a&gt;Admin City: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-32" name="rest_code_40075914dd274148ad7e05f55843843c-32" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-32"&gt;&lt;/a&gt;Admin State/Province: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-33" name="rest_code_40075914dd274148ad7e05f55843843c-33" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-33"&gt;&lt;/a&gt;Admin Postal Code: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-34" name="rest_code_40075914dd274148ad7e05f55843843c-34" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-34"&gt;&lt;/a&gt;Admin Country: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-35" name="rest_code_40075914dd274148ad7e05f55843843c-35" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-35"&gt;&lt;/a&gt;Admin Phone: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-36" name="rest_code_40075914dd274148ad7e05f55843843c-36" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-36"&gt;&lt;/a&gt;Admin Phone Ext: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-37" name="rest_code_40075914dd274148ad7e05f55843843c-37" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-37"&gt;&lt;/a&gt;Admin Fax: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-38" name="rest_code_40075914dd274148ad7e05f55843843c-38" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-38"&gt;&lt;/a&gt;Admin Fax Ext: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-39" name="rest_code_40075914dd274148ad7e05f55843843c-39" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-39"&gt;&lt;/a&gt;Admin Email: Please query the RDDS service of the Registrar of Record identified in this output for information on how to contact the Registrant, Admin, or Tech contact of the queried domain name.
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-40" name="rest_code_40075914dd274148ad7e05f55843843c-40" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-40"&gt;&lt;/a&gt;Registry Tech ID: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-41" name="rest_code_40075914dd274148ad7e05f55843843c-41" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-41"&gt;&lt;/a&gt;Tech Name: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-42" name="rest_code_40075914dd274148ad7e05f55843843c-42" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-42"&gt;&lt;/a&gt;Tech Organization: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-43" name="rest_code_40075914dd274148ad7e05f55843843c-43" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-43"&gt;&lt;/a&gt;Tech Street: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-44" name="rest_code_40075914dd274148ad7e05f55843843c-44" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-44"&gt;&lt;/a&gt;Tech City: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-45" name="rest_code_40075914dd274148ad7e05f55843843c-45" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-45"&gt;&lt;/a&gt;Tech State/Province: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-46" name="rest_code_40075914dd274148ad7e05f55843843c-46" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-46"&gt;&lt;/a&gt;Tech Postal Code: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-47" name="rest_code_40075914dd274148ad7e05f55843843c-47" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-47"&gt;&lt;/a&gt;Tech Country: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-48" name="rest_code_40075914dd274148ad7e05f55843843c-48" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-48"&gt;&lt;/a&gt;Tech Phone: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-49" name="rest_code_40075914dd274148ad7e05f55843843c-49" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-49"&gt;&lt;/a&gt;Tech Phone Ext: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-50" name="rest_code_40075914dd274148ad7e05f55843843c-50" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-50"&gt;&lt;/a&gt;Tech Fax: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-51" name="rest_code_40075914dd274148ad7e05f55843843c-51" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-51"&gt;&lt;/a&gt;Tech Fax Ext: REDACTED FOR PRIVACY
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-52" name="rest_code_40075914dd274148ad7e05f55843843c-52" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-52"&gt;&lt;/a&gt;Tech Email: Please query the RDDS service of the Registrar of Record identified in this output for information on how to contact the Registrant, Admin, or Tech contact of the queried domain name.
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-53" name="rest_code_40075914dd274148ad7e05f55843843c-53" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-53"&gt;&lt;/a&gt;Name Server: ns1.dnsowl.com
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-54" name="rest_code_40075914dd274148ad7e05f55843843c-54" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-54"&gt;&lt;/a&gt;Name Server: ns2.dnsowl.com
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-55" name="rest_code_40075914dd274148ad7e05f55843843c-55" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-55"&gt;&lt;/a&gt;Name Server: ns3.dnsowl.com
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-56" name="rest_code_40075914dd274148ad7e05f55843843c-56" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-56"&gt;&lt;/a&gt;DNSSEC: unsigned
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-57" name="rest_code_40075914dd274148ad7e05f55843843c-57" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-57"&gt;&lt;/a&gt;URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
&lt;a id="rest_code_40075914dd274148ad7e05f55843843c-58" name="rest_code_40075914dd274148ad7e05f55843843c-58" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_40075914dd274148ad7e05f55843843c-58"&gt;&lt;/a&gt;&amp;gt;&amp;gt;&amp;gt; Last update of WHOIS database: 2024-03-12T15:25:18Z &amp;lt;&amp;lt;&amp;lt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;查询互联网档案馆，&lt;code class="docutils literal"&gt;www.transocks.com&lt;/code&gt; 最早的存档是&lt;a class="reference external" href="https://web.archive.org/web/20170413034708/http://www.transocks.com/"&gt;2017年4月13日的存档&lt;/a&gt;。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/web.archive.org_www.transocks.com.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/web.archive.org_www.transocks.com.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/web.archive.org_www.transocks.com.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;互联网档案馆中 &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;http://www.transocks.com/&lt;/span&gt;&lt;/code&gt; 最早的（2017年4月13日）存档&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;根据互联网档案馆的信息，&lt;strong&gt;回国VPN「穿梭」至少已经持续运营了7年时间&lt;/strong&gt;。
如果假设运营开始于 &lt;code class="docutils literal"&gt;transocks.com&lt;/code&gt; 注册时间，那便是已经持续运营了10年时间。&lt;/p&gt;
&lt;p&gt;另外，根据 &lt;a class="reference external" href="https://blocky.greatfire.org"&gt;BLOCKY&lt;/a&gt; 的数据，&lt;code class="docutils literal"&gt;www.transocks.com&lt;/code&gt; 被 GFW 屏蔽时间不早于&lt;a class="reference external" href="https://blocky.greatfire.org/api/url_test_result/11044880?format=ooni"&gt;2017年11月14日&lt;/a&gt;不晚于&lt;a class="reference external" href="https://blocky.greatfire.org/api/url_test_result/11713586?format=ooni"&gt;2018年3月15日&lt;/a&gt;。&lt;/p&gt;
&lt;/section&gt;
&lt;section id="section-3"&gt;
&lt;h2&gt;更进一步&lt;/h2&gt;
&lt;p&gt;将上文中找到的公司名称以及地址输入到天眼查等企业查询工具中查询，找到了「成都飞欧比网络科技有限公司」这个国内公司实体。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/tianyancha_index.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/tianyancha_index.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/tianyancha_index.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;&lt;a class="reference external" href="https://www.tianyancha.com/company/2463943673"&gt;天眼查页面&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_index.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/qcc_index.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_index.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;&lt;a class="reference external" href="https://www.qcc.com/firm/51ce0a617b78241d9731b4b5d2926c1d.html"&gt;企查查页面&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;成都飞欧比网络科技有限公司，成立于2016年，位于四川省成都市，企业注册资本1000万人民币。&lt;/p&gt;
&lt;p&gt;主营产品：穿梭（Transocks）是一款 VPN（虚拟专用网络）服务软件，专门帮海外华人解决浏览中国网站时遇到的访问限制问题。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_2.png"&gt;&lt;img alt="统一社会信用代码：91510100MA61XDA32R，组织机构代码：MA61XDA3-2，工商注册号：510110000065211" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_2.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;工商信息&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/tianyancha_2.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/tianyancha_2.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/tianyancha_2.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;股东信息&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_3.png"&gt;&lt;img alt="许可证编号：B1-20200386，许可证业务种类：国内互联网虚拟专用网业务" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_3.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;电信许可&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_4.png"&gt;&lt;img alt="许可证编号：川B2-20180414，许可证业务种类：信息服务业务（仅限互联网信息服务）" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_4.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;电信许可&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_5.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/qcc_5.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_5.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;软件违规&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_6.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/qcc_6.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_6.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;四川省和重庆市通信管理局联合通报侵害用户权益的APP（2023年第十一期）（1/2）&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_7.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/qcc_7.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_7.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;四川省和重庆市通信管理局联合通报侵害用户权益的APP（2023年第十一期）（2/2）&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_8.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/qcc_8.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_8.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;四川省通信管理局关于下架侵害用户权益APP的通报（2023年第9批）（1/2）&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_9.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/qcc_9.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/qcc_9.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;四川省通信管理局关于下架侵害用户权益APP的通报（2023年第9批）（2/2）&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;打开该公司登记的官网，可以看出国内官网网页内容与之前的网页一致。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/www.transocks.com.cn.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/www.transocks.com.cn.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/www.transocks.com.cn.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;国内公司官网：&lt;a class="reference external" href="https://www.transocks.com.cn/"&gt;https://www.transocks.com.cn/&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/ICP.png"&gt;&lt;img alt="/images/2024/demystifying-the-vpn-app-transocks/ICP.png" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/ICP.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;ICP备案查询：蜀ICP备18024647号&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-1" name="rest_code_0c88423145b440a7869168bbfb721b7d-1" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-1"&gt;&lt;/a&gt;$ whois transocks.com.cn
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-2" name="rest_code_0c88423145b440a7869168bbfb721b7d-2" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-2"&gt;&lt;/a&gt;Domain Name: transocks.com.cn
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-3" name="rest_code_0c88423145b440a7869168bbfb721b7d-3" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-3"&gt;&lt;/a&gt;ROID: 20180704s10011s89656998-cn
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-4" name="rest_code_0c88423145b440a7869168bbfb721b7d-4" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-4"&gt;&lt;/a&gt;Domain Status: clientTransferProhibited
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-5" name="rest_code_0c88423145b440a7869168bbfb721b7d-5" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-5"&gt;&lt;/a&gt;Registrant: 成都飞欧比网络科技有限公司
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-6" name="rest_code_0c88423145b440a7869168bbfb721b7d-6" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-6"&gt;&lt;/a&gt;Registrant Contact Email: 1154857151@qq.com
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-7" name="rest_code_0c88423145b440a7869168bbfb721b7d-7" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-7"&gt;&lt;/a&gt;Sponsoring Registrar: 阿里云计算有限公司（万网）
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-8" name="rest_code_0c88423145b440a7869168bbfb721b7d-8" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-8"&gt;&lt;/a&gt;Name Server: vip3.alidns.com
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-9" name="rest_code_0c88423145b440a7869168bbfb721b7d-9" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-9"&gt;&lt;/a&gt;Name Server: vip4.alidns.com
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-10" name="rest_code_0c88423145b440a7869168bbfb721b7d-10" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-10"&gt;&lt;/a&gt;Registration Time: 2018-07-04 15:42:05
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-11" name="rest_code_0c88423145b440a7869168bbfb721b7d-11" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-11"&gt;&lt;/a&gt;Expiration Time: 2027-07-04 15:42:05
&lt;a id="rest_code_0c88423145b440a7869168bbfb721b7d-12" name="rest_code_0c88423145b440a7869168bbfb721b7d-12" href="https://blog.bgme.me/posts/2024/demystifying-the-vpn-app-transocks/#rest_code_0c88423145b440a7869168bbfb721b7d-12"&gt;&lt;/a&gt;DNSSEC: unsigned
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="section-4"&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;当你在 Android 系统启动 VPN 应用时，应该看见过这样的警告确认：「“&amp;lt;xxxx&amp;gt;”想要设置一个VPN连接，以便监控网络流量。除非您信任该来源，否则请勿接受此请求。」。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/VPN_warning_1.png"&gt;&lt;img alt="“Shadowsocks”想要设置一个VPN连接，以便监控网络流量。除非您信任该来源，否则请勿接受此请求。" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/VPN_warning_1.png"&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;当你连接上VPN，此时点击状态栏上的钥匙，也可以看到这样的警告：「您已连接到“&amp;lt;xxxx&amp;gt;”（该应用能够监控您的网络活动，其中包括收发电子邮件、使用应用和浏览网站）。」&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/VPN_warning_2.png"&gt;&lt;img alt="您已连接到“Shadowsocks”（该应用能够监控您的网络活动，其中包括收发电子邮件、使用应用和浏览网站）。" src="https://blog.bgme.me/images/2024/demystifying-the-vpn-app-transocks/VPN_warning_2.png"&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/section&gt;</description><category>GFW</category><category>vpn</category><guid>7a6f5196-32b8-4100-bcab-6811ef321764</guid><pubDate>Tue, 12 Mar 2024 14:09:11 GMT</pubDate></item><item><title>现代问题现代方法解决：通过脚本高效处理SPAM</title><link>https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/</link><dc:creator>无影人</dc:creator><description>&lt;figure class="align-center"&gt;
&lt;img alt="/images/2024/anti-spam/spam-wave.png" src="https://blog.bgme.me/images/2024/anti-spam/spam-wave.png"&gt;
&lt;figcaption&gt;
&lt;p&gt;一大波SPAM即将到来&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;最近，SPAM 狂潮来袭，一波又一波的 SPAM 的到来，让实例管理人员疲于奔命。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="/images/2024/anti-spam/report-email.png" src="https://blog.bgme.me/images/2024/anti-spam/report-email.png"&gt;
&lt;figcaption&gt;
&lt;p&gt;有关 Report 的提醒邮件 （未完，下方还有好几屏）&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;面对 SPAM 报告，我们需要封禁 SPAM 帐户，Limite 被 SPAM 入侵的实例以防进一步的骚扰。&lt;/p&gt;
&lt;p&gt;但这几个步骤通过 Mastodon Web 自带的管理界面进行非常麻烦，需要打开好几个网页，点击好多次才能完成。
如果你还要发布管理操作报告，那就更麻烦了。&lt;/p&gt;
&lt;p&gt;Mastodon Web 自带的管理工具，在这种大规模 SPAM 入侵时，显得有一些力不从心。&lt;/p&gt;
&lt;p&gt;人肉管理 vs 脚本SPAM，人肉管理能不能胜利尚不好说，但累死是一定的。现代问题现代方法解决，管理也需要脚本辅助。&lt;/p&gt;
&lt;p&gt;本文将介绍，如何使用脚本半自动化处理的黑猫SPAM。&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;本文提到的所有文件可至 &lt;a class="reference external" href="https://blog.bgme.me/listings/anti-blackcat-spam/"&gt;anti-blackcat-spam 目录&lt;/a&gt;查看。&lt;/p&gt;
&lt;section id="section-1"&gt;
&lt;h2&gt;0. 所需条件&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Mastodon PostgreSQL 数据库访问权限&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mastodon 实例 Admin 权限&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;python 运行环境&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="section-2"&gt;
&lt;h2&gt;1. 注册应用&lt;/h2&gt;
&lt;p&gt;Mastodon Web 界面，打开 首选项（Preferences） -&amp;gt; 开发（Development） 。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2024/anti-spam/settings-applications.png"&gt;&lt;img alt="/images/2024/anti-spam/settings-applications.png" src="https://blog.bgme.me/images/2024/anti-spam/settings-applications.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;首选项（Preferences） -&amp;gt; 开发（Development）&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;创建如下 Scopes 的应用：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_df701df7d31b4b2b857722d3ca700216-1" name="rest_code_df701df7d31b4b2b857722d3ca700216-1" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_df701df7d31b4b2b857722d3ca700216-1"&gt;&lt;/a&gt;read:accounts read:statuses write:reports admin:read:accounts admin:read:domain_allows admin:read:domain_blocks admin:read:reports admin:write:accounts admin:write:domain_allows admin:write:domain_blocks admin:write:reports
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="spam"&gt;
&lt;h2&gt;2. 查找疑似 SPAM 帐户&lt;/h2&gt;
&lt;p&gt;连接上 Mastodon PostgreSQL ，运行如下 SQL 找出疑似 SPAM 帐户，并将结果保存为 CSV 文件。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code sql"&gt;&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-1" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-1" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;-- 查找所有位于未进行管理操作实例的疑似 SPAM 帐户&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-2" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-2" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-2"&gt;&lt;/a&gt;&lt;span class="k"&gt;select&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-3" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-3" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-4" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-4" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-5" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-5" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-6" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-6" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;display_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-7" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-7" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;avatar_file_name&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-8" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-8" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-8"&gt;&lt;/a&gt;&lt;span class="k"&gt;from&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-9" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-9" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;accounts&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-10" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-10" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-10"&gt;&lt;/a&gt;&lt;span class="k"&gt;where&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-11" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-11" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'^[0-9a-z]{10}$'&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-12" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-12" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;display_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;display_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-13" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-13" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'2024-02-15 00:00:00'&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-14" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-14" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suspended_at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-15" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-15" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-15"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avatar_file_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-16" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-16" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-16"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"domain"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-17" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-17" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-17"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"domain"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-18" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-18" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-18"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-19" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-19" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-19"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;"domain"&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-20" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-20" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-20"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-21" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-21" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-21"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;domain_blocks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;
&lt;a id="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-22" name="rest_code_8d839bdd6be14c29ab1d5339089c6dfa-22" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_8d839bdd6be14c29ab1d5339089c6dfa-22"&gt;&lt;/a&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="section-3"&gt;
&lt;h2&gt;3. 运行管理脚本&lt;/h2&gt;
&lt;p&gt;将&lt;a class="reference external" href="https://blog.bgme.me/listings/anti-blackcat-spam/main.py"&gt;管理脚本&lt;/a&gt;下载至本地，如需在线查看可点击&lt;a class="reference external" href="https://blog.bgme.me/listings/anti-blackcat-spam/main.py.html"&gt;此链接&lt;/a&gt;。&lt;/p&gt;
&lt;section id="section-4"&gt;
&lt;h3&gt;3.1 安装依赖&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_6da0deb883da4522a9d3abee9a350d52-1" name="rest_code_6da0deb883da4522a9d3abee9a350d52-1" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_6da0deb883da4522a9d3abee9a350d52-1"&gt;&lt;/a&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;Mastodon.py&lt;span class="w"&gt; &lt;/span&gt;beautifulsoup4
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="section-5"&gt;
&lt;h3&gt;3.2 修改管理脚本&lt;/h3&gt;
&lt;section id="domain"&gt;
&lt;h4&gt;3.2.1 修改 &lt;code class="docutils literal"&gt;DOMAIN&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;根据实际情况，将 &lt;code class="docutils literal"&gt;DOMAIN&lt;/code&gt; 设置为你需要管理的实例域名。&lt;/p&gt;
&lt;/section&gt;
&lt;section id="access-token"&gt;
&lt;h4&gt;3.2.2 修改 &lt;code class="docutils literal"&gt;ACCESS_TOKEN&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;将 &lt;a class="reference internal" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#section-2"&gt;1. 注册应用&lt;/a&gt; 中所获取的 access token 填入 &lt;code class="docutils literal"&gt;ACCESS_TOKEN&lt;/code&gt;。&lt;/p&gt;
&lt;/section&gt;
&lt;section id="accouts-csv-file"&gt;
&lt;h4&gt;3.2.3 修改 &lt;code class="docutils literal"&gt;ACCOUTS_CSV_FILE&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;将 &lt;a class="reference internal" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#spam"&gt;2. 查找疑似 SPAM 帐户&lt;/a&gt; 中所得到的 CSV 文件放到管理脚本同目录，并将 &lt;code class="docutils literal"&gt;ACCOUTS_CSV_FILE&lt;/code&gt; 修改为相应 CSV 文件的文件名。&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="section-6"&gt;
&lt;h3&gt;3.3 运行脚本&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_eeef4f23e1cc4be69c86912196f429fe-1" name="rest_code_eeef4f23e1cc4be69c86912196f429fe-1" href="https://blog.bgme.me/posts/2024/how-to-anti-spam-automatically/#rest_code_eeef4f23e1cc4be69c86912196f429fe-1"&gt;&lt;/a&gt;python&lt;span class="w"&gt; &lt;/span&gt;main.py
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;管理脚本将输出疑似 SPAM 帐户帐户名以及最新的一条嘟文以供确认，
如确认为 SPAM 帐户，管理脚本将为该 SPAM 帐户创建 Report 并转发至原站，
然后封禁所有 SPAM 帐户，
Limite 所有 SPAM 帐户所在实例。&lt;/p&gt;
&lt;img alt="/images/2024/anti-spam/python-console-1.png" src="https://blog.bgme.me/images/2024/anti-spam/python-console-1.png"&gt;
&lt;img alt="/images/2024/anti-spam/python-console-2.png" src="https://blog.bgme.me/images/2024/anti-spam/python-console-2.png"&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;hr class="docutils"&gt;
&lt;section id="section-7"&gt;
&lt;h2&gt;22时更新&lt;/h2&gt;
&lt;p&gt;之前的博文发出之后，在实际使用中发现了一些问题，于是这个脚本便有了 &lt;a class="reference external" href="https://blog.bgme.me/listings/anti-blackcat-spam/main-v2.py.html"&gt;v2&lt;/a&gt; 与 &lt;a class="reference external" href="https://blog.bgme.me/listings/anti-blackcat-spam/main-v3.py.html"&gt;v3&lt;/a&gt; 版本。&lt;/p&gt;
&lt;section id="v2-1"&gt;
&lt;h3&gt;v2 版本变化&lt;/h3&gt;
&lt;p&gt;CSV 文件名硬编码在脚本中，每次运行都要修改脚本，实在是太麻烦了。&lt;/p&gt;
&lt;p&gt;因此便有了 v2 版，通过命令行参数读取 CSV 文件名。&lt;/p&gt;
&lt;/section&gt;
&lt;section id="v3-1"&gt;
&lt;h3&gt;v3 版本变化&lt;/h3&gt;
&lt;p&gt;虽然有了管理脚本辅助，但获取CSV文件，更新管理通告都还是要打开其它程序，还是有一些不方便。&lt;/p&gt;
&lt;p&gt;于是加上了 &lt;code class="docutils literal"&gt;psycopg2&lt;/code&gt; 让脚本直接从数据库中获取数据，同时增加了更新管理通告的功能。&lt;/p&gt;
&lt;p&gt;真正实现了一条龙服务，方便到家，脚本包干。&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;</description><category>anti-spam</category><category>FediBlock</category><category>MastoAdmin</category><guid>0bfaea87-d259-4cc4-8817-b05c7e2aea82</guid><pubDate>Sun, 18 Feb 2024 04:17:18 GMT</pubDate></item><item><title>Mastodon 前端预编译失败该怎么办？</title><link>https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;Mastodon 在较新 Linux 发行版本下会遇到前端预编译出错的问题。&lt;/p&gt;
&lt;p&gt;本文大概记录一下，如何修复 Mastodon 前端预编译错误？&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;本文测试环境：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-1" name="rest_code_856744d48efd4d2e94b68ecb811576c6-1" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;describe&lt;span class="w"&gt; &lt;/span&gt;--tags
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-2" name="rest_code_856744d48efd4d2e94b68ecb811576c6-2" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;v4.2.0-beta2&lt;/span&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-3" name="rest_code_856744d48efd4d2e94b68ecb811576c6-3" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-3"&gt;&lt;/a&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-4" name="rest_code_856744d48efd4d2e94b68ecb811576c6-4" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-4"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;rev-parse&lt;span class="w"&gt; &lt;/span&gt;HEAD
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-5" name="rest_code_856744d48efd4d2e94b68ecb811576c6-5" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;facfec1ba36cee27f232ebff90b990933719235a&lt;/span&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-6" name="rest_code_856744d48efd4d2e94b68ecb811576c6-6" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-6"&gt;&lt;/a&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-7" name="rest_code_856744d48efd4d2e94b68ecb811576c6-7" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-7"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;rbenv&lt;span class="w"&gt; &lt;/span&gt;--version
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-8" name="rest_code_856744d48efd4d2e94b68ecb811576c6-8" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;rbenv 1.2.0&lt;/span&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-9" name="rest_code_856744d48efd4d2e94b68ecb811576c6-9" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-10" name="rest_code_856744d48efd4d2e94b68ecb811576c6-10" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-10"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;ruby&lt;span class="w"&gt; &lt;/span&gt;--version
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-11" name="rest_code_856744d48efd4d2e94b68ecb811576c6-11" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-11"&gt;&lt;/a&gt;&lt;span class="go"&gt;ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]&lt;/span&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-12" name="rest_code_856744d48efd4d2e94b68ecb811576c6-12" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-12"&gt;&lt;/a&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-13" name="rest_code_856744d48efd4d2e94b68ecb811576c6-13" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-13"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;bundle&lt;span class="w"&gt; &lt;/span&gt;--version
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-14" name="rest_code_856744d48efd4d2e94b68ecb811576c6-14" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-14"&gt;&lt;/a&gt;&lt;span class="go"&gt;Bundler version 2.4.13&lt;/span&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-15" name="rest_code_856744d48efd4d2e94b68ecb811576c6-15" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-15"&gt;&lt;/a&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-16" name="rest_code_856744d48efd4d2e94b68ecb811576c6-16" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-16"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;node&lt;span class="w"&gt; &lt;/span&gt;--version
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-17" name="rest_code_856744d48efd4d2e94b68ecb811576c6-17" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-17"&gt;&lt;/a&gt;&lt;span class="go"&gt;v20.5.1&lt;/span&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-18" name="rest_code_856744d48efd4d2e94b68ecb811576c6-18" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-18"&gt;&lt;/a&gt;
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-19" name="rest_code_856744d48efd4d2e94b68ecb811576c6-19" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-19"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;yarn&lt;span class="w"&gt; &lt;/span&gt;--version
&lt;a id="rest_code_856744d48efd4d2e94b68ecb811576c6-20" name="rest_code_856744d48efd4d2e94b68ecb811576c6-20" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_856744d48efd4d2e94b68ecb811576c6-20"&gt;&lt;/a&gt;&lt;span class="go"&gt;1.22.19&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;hr class="docutils"&gt;
&lt;section id="err-ossl-evp-unsupported"&gt;
&lt;h2&gt;ERR_OSSL_EVP_UNSUPPORTED&lt;/h2&gt;
&lt;p&gt;如果 Node.js 版本大于 17，编译时便会遇到 &lt;code class="docutils literal"&gt;ERR_OSSL_EVP_UNSUPPORTED&lt;/code&gt; 错误。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-1" name="rest_code_4612020ce2194235925698fe5defe31c-1" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;&lt;span class="nv"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;production&lt;span class="w"&gt; &lt;/span&gt;bundle&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exec&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;rails&lt;span class="w"&gt; &lt;/span&gt;yarn:install&lt;span class="w"&gt; &lt;/span&gt;assets:precompile
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-2" name="rest_code_4612020ce2194235925698fe5defe31c-2" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;yarn install v1.22.19&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-3" name="rest_code_4612020ce2194235925698fe5defe31c-3" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;[1/5] Resolving packages...&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-4" name="rest_code_4612020ce2194235925698fe5defe31c-4" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;success Already up-to-date.&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-5" name="rest_code_4612020ce2194235925698fe5defe31c-5" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;Done in 0.47s.&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-6" name="rest_code_4612020ce2194235925698fe5defe31c-6" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;Compiling...&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-7" name="rest_code_4612020ce2194235925698fe5defe31c-7" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;Compilation failed:&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-8" name="rest_code_4612020ce2194235925698fe5defe31c-8" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;node:internal/crypto/hash:69&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-9" name="rest_code_4612020ce2194235925698fe5defe31c-9" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;this[kHandle] = new _Hash(algorithm, xofLen);&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-10" name="rest_code_4612020ce2194235925698fe5defe31c-10" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-10"&gt;&lt;/a&gt;&lt;span class="go"&gt;                ^&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-11" name="rest_code_4612020ce2194235925698fe5defe31c-11" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-11"&gt;&lt;/a&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-12" name="rest_code_4612020ce2194235925698fe5defe31c-12" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-12"&gt;&lt;/a&gt;&lt;span class="go"&gt;Error: error:0308010C:digital envelope routines::unsupported&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-13" name="rest_code_4612020ce2194235925698fe5defe31c-13" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-13"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at new Hash (node:internal/crypto/hash:69:19)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-14" name="rest_code_4612020ce2194235925698fe5defe31c-14" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-14"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at Object.createHash (node:crypto:138:10)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-15" name="rest_code_4612020ce2194235925698fe5defe31c-15" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-15"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at module.exports (/srv/app/mastodon/mastodon/node_modules/webpack/lib/util/createHash.js:135:53)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-16" name="rest_code_4612020ce2194235925698fe5defe31c-16" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-16"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at ConcatenatedModule._createIdentifier (/srv/app/mastodon/mastodon/node_modules/webpack/lib/optimize/ConcatenatedModule.js:563:16)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-17" name="rest_code_4612020ce2194235925698fe5defe31c-17" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-17"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at new ConcatenatedModule (/srv/app/mastodon/mastodon/node_modules/webpack/lib/optimize/ConcatenatedModule.js:445:27)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-18" name="rest_code_4612020ce2194235925698fe5defe31c-18" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-18"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at /srv/app/mastodon/mastodon/node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js:250:26&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-19" name="rest_code_4612020ce2194235925698fe5defe31c-19" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-19"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at SyncBailHook.eval [as call] (eval at create (/srv/app/mastodon/mastodon/node_modules/tapable/lib/HookCodeFactory.js:19:10), &amp;lt;anonymous&amp;gt;:7:16)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-20" name="rest_code_4612020ce2194235925698fe5defe31c-20" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-20"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at SyncBailHook.lazyCompileHook (/srv/app/mastodon/mastodon/node_modules/tapable/lib/Hook.js:154:20)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-21" name="rest_code_4612020ce2194235925698fe5defe31c-21" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-21"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at /srv/app/mastodon/mastodon/node_modules/webpack/lib/Compilation.js:1351:37&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-22" name="rest_code_4612020ce2194235925698fe5defe31c-22" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-22"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at AsyncSeriesHook.eval [as callAsync] (eval at create (/srv/app/mastodon/mastodon/node_modules/tapable/lib/HookCodeFactory.js:33:10), &amp;lt;anonymous&amp;gt;:6:1)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-23" name="rest_code_4612020ce2194235925698fe5defe31c-23" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-23"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at AsyncSeriesHook.lazyCompileHook (/srv/app/mastodon/mastodon/node_modules/tapable/lib/Hook.js:154:20)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-24" name="rest_code_4612020ce2194235925698fe5defe31c-24" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-24"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at Compilation.seal (/srv/app/mastodon/mastodon/node_modules/webpack/lib/Compilation.js:1342:27)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-25" name="rest_code_4612020ce2194235925698fe5defe31c-25" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-25"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at /srv/app/mastodon/mastodon/node_modules/webpack/lib/Compiler.js:675:18&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-26" name="rest_code_4612020ce2194235925698fe5defe31c-26" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-26"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at /srv/app/mastodon/mastodon/node_modules/webpack/lib/Compilation.js:1261:4&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-27" name="rest_code_4612020ce2194235925698fe5defe31c-27" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-27"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at AsyncSeriesHook.eval [as callAsync] (eval at create (/srv/app/mastodon/mastodon/node_modules/tapable/lib/HookCodeFactory.js:33:10), &amp;lt;anonymous&amp;gt;:24:1)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-28" name="rest_code_4612020ce2194235925698fe5defe31c-28" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-28"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at AsyncSeriesHook.lazyCompileHook (/srv/app/mastodon/mastodon/node_modules/tapable/lib/Hook.js:154:20)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-29" name="rest_code_4612020ce2194235925698fe5defe31c-29" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-29"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at Compilation.finish (/srv/app/mastodon/mastodon/node_modules/webpack/lib/Compilation.js:1253:28)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-30" name="rest_code_4612020ce2194235925698fe5defe31c-30" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-30"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at /srv/app/mastodon/mastodon/node_modules/webpack/lib/Compiler.js:672:17&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-31" name="rest_code_4612020ce2194235925698fe5defe31c-31" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-31"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at eval (eval at create (/srv/app/mastodon/mastodon/node_modules/tapable/lib/HookCodeFactory.js:33:10), &amp;lt;anonymous&amp;gt;:11:1)&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-32" name="rest_code_4612020ce2194235925698fe5defe31c-32" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-32"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at /srv/app/mastodon/mastodon/node_modules/webpack/lib/Compilation.js:1185:12&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-33" name="rest_code_4612020ce2194235925698fe5defe31c-33" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-33"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at /srv/app/mastodon/mastodon/node_modules/webpack/lib/Compilation.js:1097:9&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-34" name="rest_code_4612020ce2194235925698fe5defe31c-34" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-34"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-35" name="rest_code_4612020ce2194235925698fe5defe31c-35" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-35"&gt;&lt;/a&gt;&lt;span class="go"&gt;opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-36" name="rest_code_4612020ce2194235925698fe5defe31c-36" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-36"&gt;&lt;/a&gt;&lt;span class="go"&gt;library: 'digital envelope routines',&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-37" name="rest_code_4612020ce2194235925698fe5defe31c-37" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-37"&gt;&lt;/a&gt;&lt;span class="go"&gt;reason: 'unsupported',&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-38" name="rest_code_4612020ce2194235925698fe5defe31c-38" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-38"&gt;&lt;/a&gt;&lt;span class="go"&gt;code: 'ERR_OSSL_EVP_UNSUPPORTED'&lt;/span&gt;
&lt;a id="rest_code_4612020ce2194235925698fe5defe31c-39" name="rest_code_4612020ce2194235925698fe5defe31c-39" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_4612020ce2194235925698fe5defe31c-39"&gt;&lt;/a&gt;&lt;span class="go"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;解决办法参考&lt;a class="reference external" href="https://stackoverflow.com/a/74726292"&gt;这个 stackoverflow 回答&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;在运行 &lt;code class="docutils literal"&gt;RAILS_ENV=production bundle exec rails yarn:install assets:precompile&lt;/code&gt; 命令前，先设置 &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;NODE_OPTIONS=--openssl-legacy-provider&lt;/span&gt;&lt;/code&gt; 环境变量即可。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_3c945badd53a4e6ead7549f43af7eae3-1" name="rest_code_3c945badd53a4e6ead7549f43af7eae3-1" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_3c945badd53a4e6ead7549f43af7eae3-1"&gt;&lt;/a&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;NODE_OPTIONS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;--openssl-legacy-provider
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="ismoduledeclaration-has-been-deprecated-please-migrate-to-isimportorexportdeclaration"&gt;
&lt;h2&gt;&lt;code class="docutils literal"&gt;isModuleDeclaration&lt;/code&gt; has been deprecated, please migrate to &lt;code class="docutils literal"&gt;isImportOrExportDeclaration&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;编译时，你可能会遇到类似如下面的 &lt;code class="docutils literal"&gt;isModuleDeclaration has been deprecated, please migrate to isImportOrExportDeclaration&lt;/code&gt; 提示。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-1" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-1" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;NODE_OPTIONS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;--openssl-legacy-provider
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-2" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-2" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-2"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;&lt;span class="nv"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;production&lt;span class="w"&gt; &lt;/span&gt;bundle&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exec&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;rails&lt;span class="w"&gt; &lt;/span&gt;yarn:install&lt;span class="w"&gt; &lt;/span&gt;assets:precompile
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-3" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-3" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;yarn install v1.22.19&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-4" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-4" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;[1/5] Resolving packages...&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-5" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-5" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;success Already up-to-date.&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-6" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-6" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;Done in 0.50s.&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-7" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-7" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-7"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.971888 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/doorkeeper/admin/application-a644908e7bab54fb749be0f59fb64a7480bbf9c4c2b79d4a65791cb7ab4d8730.css&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-8" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-8" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-8"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.972252 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/doorkeeper/admin/application-a644908e7bab54fb749be0f59fb64a7480bbf9c4c2b79d4a65791cb7ab4d8730.css.gz&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-9" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-9" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-9"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.973952 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/doorkeeper/application-c93dac2ad9d65e3393e0e2c958481e86ef7a5e5b0f6ce406842a7b99b25a4850.css&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-10" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-10" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-10"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.974013 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/doorkeeper/application-c93dac2ad9d65e3393e0e2c958481e86ef7a5e5b0f6ce406842a7b99b25a4850.css.gz&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-11" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-11" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-11"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.975223 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/pghero/favicon-db10337a56c45eb43c22ff5019546b520fa22c7281d4d385f235cbca67ed26bb.png&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-12" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-12" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-12"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.982815 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/pghero/application-fc5c893e805df52338bef3bda5a5431f74f1401da68e4f0381ac9ecb7a801e1a.js&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-13" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-13" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-13"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.982956 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/pghero/application-fc5c893e805df52338bef3bda5a5431f74f1401da68e4f0381ac9ecb7a801e1a.js.gz&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-14" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-14" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-14"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.984171 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/pghero/application-29fa393e673685cdbf2fb2b637098a15b988605f46bfa962f6e0cb94d15bc567.css&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-15" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-15" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-15"&gt;&lt;/a&gt;&lt;span class="go"&gt;I, [2023-08-31T17:34:06.984319 #40650]  INFO -- : Writing /srv/app/mastodon/mastodon/public/assets/pghero/application-29fa393e673685cdbf2fb2b637098a15b988605f46bfa962f6e0cb94d15bc567.css.gz&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-16" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-16" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-16"&gt;&lt;/a&gt;&lt;span class="go"&gt;Compiling...&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-17" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-17" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-17"&gt;&lt;/a&gt;&lt;span class="go"&gt;Compiled all packs in /srv/app/mastodon/mastodon/public/packs&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-18" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-18" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-18"&gt;&lt;/a&gt;&lt;span class="go"&gt;`isModuleDeclaration` has been deprecated, please migrate to `isImportOrExportDeclaration`&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-19" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-19" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-19"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at isModuleDeclaration (/srv/app/mastodon/mastodon/node_modules/babel-plugin-lodash/node_modules/@babel/types/lib/validators/generated/index.js:2740:35)&lt;/span&gt;
&lt;a id="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-20" name="rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-20" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_6a0ac96ef2284e6db287460f8ba1b0bb-20"&gt;&lt;/a&gt;&lt;span class="go"&gt;    at PluginPass.Program (/srv/app/mastodon/mastodon/node_modules/babel-plugin-lodash/lib/index.js:102:44)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这只是编译警告，可以怱略不管。&lt;/p&gt;
&lt;p&gt;如果一定要消除的话，可以参考： &lt;a class="reference external" href="https://github.com/lodash/babel-plugin-lodash/issues/259#issuecomment-1438592335"&gt;https://github.com/lodash/babel-plugin-lodash/issues/259#issuecomment-1438592335&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;
&lt;section id="section-1"&gt;
&lt;h2&gt;清理编译失败产物&lt;/h2&gt;
&lt;p&gt;对于新版 Node.js 编译时会遇上 &lt;code class="docutils literal"&gt;ERR_OSSL_EVP_UNSUPPORTED&lt;/code&gt; 错误，进而编译失败。&lt;/p&gt;
&lt;p&gt;当你添加上环境变量，再次编译时，有可能会遇上 &lt;code class="docutils literal"&gt;Everything's &lt;span class="pre"&gt;up-to-date.&lt;/span&gt; Nothing to do&lt;/code&gt; 。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code console"&gt;&lt;a id="rest_code_300397ee11994b428557bb8abee532c0-1" name="rest_code_300397ee11994b428557bb8abee532c0-1" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_300397ee11994b428557bb8abee532c0-1"&gt;&lt;/a&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;&lt;span class="nv"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;production&lt;span class="w"&gt; &lt;/span&gt;bundle&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exec&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;rails&lt;span class="w"&gt; &lt;/span&gt;yarn:install&lt;span class="w"&gt; &lt;/span&gt;assets:precompile
&lt;a id="rest_code_300397ee11994b428557bb8abee532c0-2" name="rest_code_300397ee11994b428557bb8abee532c0-2" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_300397ee11994b428557bb8abee532c0-2"&gt;&lt;/a&gt;&lt;span class="go"&gt;yarn install v1.22.19&lt;/span&gt;
&lt;a id="rest_code_300397ee11994b428557bb8abee532c0-3" name="rest_code_300397ee11994b428557bb8abee532c0-3" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_300397ee11994b428557bb8abee532c0-3"&gt;&lt;/a&gt;&lt;span class="go"&gt;[1/5] Resolving packages...&lt;/span&gt;
&lt;a id="rest_code_300397ee11994b428557bb8abee532c0-4" name="rest_code_300397ee11994b428557bb8abee532c0-4" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_300397ee11994b428557bb8abee532c0-4"&gt;&lt;/a&gt;&lt;span class="go"&gt;success Already up-to-date.&lt;/span&gt;
&lt;a id="rest_code_300397ee11994b428557bb8abee532c0-5" name="rest_code_300397ee11994b428557bb8abee532c0-5" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_300397ee11994b428557bb8abee532c0-5"&gt;&lt;/a&gt;&lt;span class="go"&gt;Done in 0.48s.&lt;/span&gt;
&lt;a id="rest_code_300397ee11994b428557bb8abee532c0-6" name="rest_code_300397ee11994b428557bb8abee532c0-6" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_300397ee11994b428557bb8abee532c0-6"&gt;&lt;/a&gt;&lt;span class="go"&gt;Everything's up-to-date. Nothing to do&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这时可以运行如下命令，删去之前编译产物强制重新编译。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_b94f89112bb24e82a92feeaf04bb51b5-1" name="rest_code_b94f89112bb24e82a92feeaf04bb51b5-1" href="https://blog.bgme.me/posts/2023/how-to-fix-mastodon-assets-precompile-failed/#rest_code_b94f89112bb24e82a92feeaf04bb51b5-1"&gt;&lt;/a&gt;rm&lt;span class="w"&gt; &lt;/span&gt;-r&lt;span class="w"&gt; &lt;/span&gt;build&lt;span class="w"&gt; &lt;/span&gt;public/system&lt;span class="w"&gt; &lt;/span&gt;public/assets&lt;span class="w"&gt; &lt;/span&gt;public/packs&lt;span class="w"&gt; &lt;/span&gt;public/packs-test
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;</description><category>Mastodon</category><guid>e653137f-bf48-476b-b2b3-5db7d84acdf9</guid><pubDate>Thu, 31 Aug 2023 08:56:18 GMT</pubDate></item><item><title>浏览器 fetch, GM_xmlhttpRequest 以及 Forbidden header</title><link>https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;今天阅读 &lt;a class="reference external" href="https://blog.nest.moe/posts/write-a-package-for-both-browser-and-nodejs"&gt;《整一个同时用于浏览器和 Node.js 的模块》&lt;/a&gt; 这篇博文时，看到其中关于浏览器 fetch api 获取请求头部分，心有所感，于是就有了本文。&lt;/p&gt;
&lt;p&gt;本文将说一说浏览器 fetch api 与 Forbidden header 的那些事情，在浏览器中可以设置并获取 Forbidden header 吗？&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;一切开始之前，先看一看官方文档是怎么说的。&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/API/fetch"&gt;fetch() global function&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/API/Headers"&gt;Headers&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie"&gt;Set-Cookie&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name"&gt;Forbidden header name&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_response_header_name"&gt;Forbidden response header name&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="admonition error docutils container"&gt;
&lt;p&gt;For security reasons, some headers can only be controlled by the user agent. These headers include the forbidden header names and forbidden response header names.&lt;/p&gt;
&lt;p&gt;出于安全考虑，某些头只能由用户代理控制。这些头信息包括 forbidden header names 和 forbidden response header names。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="admonition error docutils container"&gt;
&lt;p&gt;Warning: Browsers block frontend JavaScript code from accessing the Set-Cookie header, as required by the Fetch spec, which defines Set-Cookie as a forbidden response-header name that must be filtered out from any response exposed to frontend code.&lt;/p&gt;
&lt;p&gt;警告： 根据 Fetch 规范，Set-Cookie 是一个禁止的响应标头，对应的响应在被暴露给前端代码前，必须滤除这一响应标头，即浏览器会阻止前端 JavaScript 代码访问 Set-Cookie 标头。&lt;/p&gt;
&lt;/div&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;文档告诉我们，在浏览器环境中，向请求设置 &lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name"&gt;Forbidden header&lt;/a&gt; ，获取响应的 &lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_response_header_name"&gt;Forbidden response header&lt;/a&gt; （&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;Set-Cookie&lt;/span&gt;&lt;/code&gt;） 是无法做到的。&lt;/p&gt;
&lt;p&gt;真的是这样吗？我不信，我要自己试一试。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code javascript"&gt;&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-1" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-1" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-1"&gt;&lt;/a&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-2" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-2" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-3" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-3" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/get"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-4" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-4" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-5" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-5" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-6" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-6" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;Cookie&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test1234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-7" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-7" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Dest"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"document"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-8" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-8" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Mode"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"navigate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-9" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-9" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Site"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-10" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-10" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-10"&gt;&lt;/a&gt;&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;Test&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test1234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-11" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-11" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-12" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-12" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-13" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-13" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp_body&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-14" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-14" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/get"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-15" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-15" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-15"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-16" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-16" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-16"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;()]);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-17" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-17" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-17"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;()].&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;": "&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"\n"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-18" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-18" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-18"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp_body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-19" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-19" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-19"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-20" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-20" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-20"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-21" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-21" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-21"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-22" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-22" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-22"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-23" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-23" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-23"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-24" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-24" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-24"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://www.baidu.com/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-25" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-25" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-25"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-26" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-26" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-26"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-27" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-27" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-27"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp_body&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-28" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-28" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-28"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://www.baidu.com/"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-29" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-29" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-29"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-30" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-30" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-30"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;()]);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-31" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-31" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-31"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;()].&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;": "&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"\n"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-32" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-32" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-32"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp_body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-33" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-33" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-33"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-34" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-34" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-34"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-35" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-35" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-35"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-36" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-36" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-36"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-37" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-37" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-37"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-38" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-38" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-38"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;XMLHttpRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-39" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-39" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-39"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/get"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-40" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-40" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-40"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-41" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-41" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-41"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setRequestHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Cookie"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test1234"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-42" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-42" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-42"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setRequestHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Dest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"document"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-43" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-43" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-43"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setRequestHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Mode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"navigate"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-44" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-44" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-44"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setRequestHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Site"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-45" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-45" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-45"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setRequestHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Test"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test1234"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-46" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-46" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-46"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-47" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-47" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-47"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"json"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-48" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-48" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-48"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-49" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-49" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-49"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"load"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-50" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-50" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-50"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/get"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-51" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-51" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-51"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-52" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-52" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-52"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-53" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-53" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-53"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-54" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-54" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-54"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getAllResponseHeaders&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-55" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-55" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-55"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-56" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-56" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-56"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-57" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-57" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-57"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-58" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-58" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-58"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-59" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-59" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-59"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-60" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-60" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-60"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-61" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-61" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-61"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-62" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-62" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-62"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;XMLHttpRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-63" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-63" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-63"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.baidu.com/"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-64" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-64" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-64"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-65" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-65" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-65"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-66" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-66" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-66"&gt;&lt;/a&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-67" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-67" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-67"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"load"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-68" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-68" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-68"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://www.baidu.com/"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-69" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-69" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-69"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-70" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-70" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-70"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-71" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-71" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-71"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-72" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-72" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-72"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getAllResponseHeaders&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-73" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-73" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-73"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-74" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-74" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-74"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-75" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-75" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-75"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-76" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-76" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-76"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-77" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-77" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-77"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-78" name="rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-78" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_dc6d2ddeeeff4a7b9b1126f95e998adf-78"&gt;&lt;/a&gt;&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;到 &lt;a class="reference external" href="https://www.baidu.com/"&gt;https://www.baidu.com/&lt;/a&gt; 页面，运行上述代码，结果如下：&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/request.png"&gt;&lt;img alt="/images/2023/browser-fetch-forbidden-header/request.png" src="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/request.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;Forbidden header&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/response.png"&gt;&lt;img alt="/images/2023/browser-fetch-forbidden-header/response.png" src="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/response.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;Forbidden response header&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;看来文档写的一点没错，确实无法设置与获取 Forbidden header 。&lt;/p&gt;
&lt;p&gt;当然如果仅仅是这样，还不至于让我水一篇博文。&lt;/p&gt;
&lt;p&gt;现在是见证奇迹的时刻了。&lt;/p&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;打开 Violentmonkey API 文档，在 &lt;a class="reference external" href="https://violentmonkey.github.io/api/gm/#gm_xmlhttprequest"&gt;GM_xmlhttpRequest&lt;/a&gt; 一节中，有这样的内容。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest.png"&gt;&lt;img alt="/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest.png" src="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;GM_xmlhttpRequest&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_6d33f76dec674a4bbb59ed74e88b8760-1" name="rest_code_6d33f76dec674a4bbb59ed74e88b8760-1" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_6d33f76dec674a4bbb59ed74e88b8760-1"&gt;&lt;/a&gt;Some special headers are also allowed:
&lt;a id="rest_code_6d33f76dec674a4bbb59ed74e88b8760-2" name="rest_code_6d33f76dec674a4bbb59ed74e88b8760-2" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_6d33f76dec674a4bbb59ed74e88b8760-2"&gt;&lt;/a&gt;
&lt;a id="rest_code_6d33f76dec674a4bbb59ed74e88b8760-3" name="rest_code_6d33f76dec674a4bbb59ed74e88b8760-3" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_6d33f76dec674a4bbb59ed74e88b8760-3"&gt;&lt;/a&gt;- 'Cookie'
&lt;a id="rest_code_6d33f76dec674a4bbb59ed74e88b8760-4" name="rest_code_6d33f76dec674a4bbb59ed74e88b8760-4" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_6d33f76dec674a4bbb59ed74e88b8760-4"&gt;&lt;/a&gt;- 'Host'
&lt;a id="rest_code_6d33f76dec674a4bbb59ed74e88b8760-5" name="rest_code_6d33f76dec674a4bbb59ed74e88b8760-5" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_6d33f76dec674a4bbb59ed74e88b8760-5"&gt;&lt;/a&gt;- 'Origin'
&lt;a id="rest_code_6d33f76dec674a4bbb59ed74e88b8760-6" name="rest_code_6d33f76dec674a4bbb59ed74e88b8760-6" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_6d33f76dec674a4bbb59ed74e88b8760-6"&gt;&lt;/a&gt;- 'Referer'
&lt;a id="rest_code_6d33f76dec674a4bbb59ed74e88b8760-7" name="rest_code_6d33f76dec674a4bbb59ed74e88b8760-7" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_6d33f76dec674a4bbb59ed74e88b8760-7"&gt;&lt;/a&gt;- 'User-Agent'
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;如果我没有记错的话，这些都是 Forbidden header 吧。怎么 &lt;code class="docutils literal"&gt;GM_xmlhttpRequest&lt;/code&gt; 就可以设置了？我不信。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code javascript"&gt;&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-1" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-1" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// ==UserScript==&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-2" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-2" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-2"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @name        GM_xmlhttpRequest Forbidden header Test&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-3" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-3" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-3"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @namespace   bgme.me&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-4" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-4" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-4"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @match       https://example.org/&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-5" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-5" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-5"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @grant       GM_xmlhttpRequest&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-6" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-6" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-6"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @version     1.0&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-7" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-7" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-7"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @author      bgme&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-8" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-8" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-8"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @connect     *&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-9" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-9" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-9"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @connect     httpbin.org&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-10" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-10" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-10"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @connect     www.baidu.com&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-11" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-11" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-11"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// @description GM_xmlhttpRequest Forbidden header Test&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-12" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-12" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-12"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// ==/UserScript==&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-13" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-13" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-14" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-14" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-14"&gt;&lt;/a&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-15" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-15" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-15"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;GM_xmlhttpRequest&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-16" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-16" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-16"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/get"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-17" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-17" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-17"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-18" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-18" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-18"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-19" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-19" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-19"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;Cookie&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test1234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-20" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-20" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-20"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Dest"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"document"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-21" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-21" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-21"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Mode"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"navigate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-22" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-22" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-22"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s2"&gt;"Sec-Fetch-Site"&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-23" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-23" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-23"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;Test&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test1234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-24" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-24" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-24"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-25" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-25" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-25"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;responseType&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-26" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-26" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-26"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-27" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-27" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-27"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/get"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-28" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-28" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-28"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-29" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-29" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-29"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-30" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-30" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-30"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseHeaders&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-31" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-31" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-31"&gt;&lt;/a&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-32" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-32" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-32"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-33" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-33" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-33"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-34" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-34" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-34"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-35" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-35" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-35"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-36" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-36" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-36"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-37" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-37" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-37"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-38" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-38" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-38"&gt;&lt;/a&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-39" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-39" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-39"&gt;&lt;/a&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-40" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-40" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-40"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;GM_xmlhttpRequest&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-41" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-41" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-41"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.baidu.com/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-42" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-42" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-42"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-43" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-43" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-43"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;responseType&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-44" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-44" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-44"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-45" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-45" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-45"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://www.baidu.com/"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-46" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-46" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-46"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-47" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-47" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-47"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-48" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-48" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-48"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseHeaders&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-49" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-49" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-49"&gt;&lt;/a&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-50" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-50" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-50"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-51" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-51" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-51"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-52" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-52" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-52"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-53" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-53" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-53"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-54" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-54" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-54"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-55" name="rest_code_61ab469887de42b7afb7f1c0ef32ffe8-55" href="https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/#rest_code_61ab469887de42b7afb7f1c0ef32ffe8-55"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;打开 &lt;a class="reference external" href="https://example.org/"&gt;https://example.org/&lt;/a&gt; ，F12 打开 console。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest_test_Violentmonkey.png"&gt;&lt;img alt="/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest_test_Violentmonkey.png" src="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest_test_Violentmonkey.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;GM_xmlhttpRequest Forbidden header Test on Violentmonkey&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest_test_Tampermonkey.png"&gt;&lt;img alt="/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest_test_Tampermonkey.png" src="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/GM_xmlhttpRequest_test_Tampermonkey.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;GM_xmlhttpRequest Forbidden header Test on Tampermonkey&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;虽然不愿意相信，但事实摆在面前， &lt;code class="docutils literal"&gt;GM_xmlhttpRequest&lt;/code&gt; 确实突破了浏览器的 Forbidden header 限制。&lt;/p&gt;
&lt;p&gt;那么问题又来了，Violentmonkey、Tampermonkey 是怎么做到的？&lt;/p&gt;
&lt;p&gt;莫非是 &lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Background_scripts"&gt;Background scripts&lt;/a&gt; 里的 fetch API 有特殊的权限，可以像 Node 那样不受 Forbidden header 限制？&lt;/p&gt;
&lt;p&gt;将第一部分创建为 Background scripts，加载插件，打开插件调试 Console 。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/Background_scripts_fetch.png"&gt;&lt;img alt="/images/2023/browser-fetch-forbidden-header/Background_scripts_fetch.png" src="https://blog.bgme.me/images/2023/browser-fetch-forbidden-header/Background_scripts_fetch.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;fetch on Background scripts&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;结果如图，很明显，Background scripts 中的 fetch API 也要受到 Forbidden header 的限制。&lt;/p&gt;
&lt;p&gt;翻看了一下 Violentmonkey 的源码（&lt;a class="reference external" href="https://github.com/violentmonkey/violentmonkey/blob/5015a06f8ff1462a2139d8710dd02956c679ebb2/src/background/utils/requests.js"&gt;requests.js&lt;/a&gt;、&lt;a class="reference external" href="https://github.com/violentmonkey/violentmonkey/blob/5015a06f8ff1462a2139d8710dd02956c679ebb2/src/background/utils/requests-core.js"&gt;requests-core.js&lt;/a&gt;），可以看出 Violentmonkey 通过 &lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest"&gt;webRequest&lt;/a&gt; API 突破了 Forbidden header 的限制。&lt;/p&gt;
&lt;p&gt;但有一个不幸的消息是 webRequest API 在 Manifest V3 中被 Google 干掉了，想要修改请求，就只能使用 &lt;a class="reference external" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest"&gt;declarativeNetRequest&lt;/a&gt; API 。
到了 Manifest V3 时代， GM_xmlhttpRequest 很可能就无法实现修改、读取 Forbidden header 的功能了。&lt;/p&gt;</description><category>browser</category><category>fetch</category><guid>https://blog.bgme.me/posts/2023/browser-fetch-gm_xmlhttprequest-and-forbidden-header/</guid><pubDate>Sat, 19 Aug 2023 15:58:38 GMT</pubDate></item><item><title>如何在 Linux 系统上对 AMD GPU 启用 Firefox 视频硬件解码</title><link>https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;记录一下自己开启 Firefox 视频硬件解码的过程。&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;对于 Intel GPU Firefox 115 以及之后版本，Firefox 会自动在符合条件时开启硬件加速。
但对于 AMD GPU Firefox 并不会自动开启硬件加速。
因此用户需要手动配置。&lt;/p&gt;
&lt;section id="va-api"&gt;
&lt;h2&gt;第零步：安装相应的驱动及软件包，并验证 VA-API 可用&lt;/h2&gt;
&lt;p&gt;因为本文主要的话题是 Firefox ，因此这部分内容就不赘述了。&lt;/p&gt;
&lt;p&gt;具体可以参考 Arch Wiki &lt;a class="reference external" href="https://wiki.archlinux.org/title/Hardware_video_acceleration"&gt;Hardware video acceleration&lt;/a&gt; 页面。&lt;/p&gt;
&lt;p&gt;使用 &lt;code class="docutils literal"&gt;vainfo&lt;/code&gt; 命令，看到如下输出，确认 VA-API 可用就可以进行下一步了。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code shell"&gt;&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-1" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-1" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-1"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;vainfo
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-2" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-2" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-2"&gt;&lt;/a&gt;Trying&lt;span class="w"&gt; &lt;/span&gt;display:&lt;span class="w"&gt; &lt;/span&gt;wayland
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-3" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-3" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-3"&gt;&lt;/a&gt;vainfo:&lt;span class="w"&gt; &lt;/span&gt;VA-API&lt;span class="w"&gt; &lt;/span&gt;version:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.19&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;libva&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.19.0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-4" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-4" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-4"&gt;&lt;/a&gt;vainfo:&lt;span class="w"&gt; &lt;/span&gt;Driver&lt;span class="w"&gt; &lt;/span&gt;version:&lt;span class="w"&gt; &lt;/span&gt;Mesa&lt;span class="w"&gt; &lt;/span&gt;Gallium&lt;span class="w"&gt; &lt;/span&gt;driver&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;23&lt;/span&gt;.1.6&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;AMD&lt;span class="w"&gt; &lt;/span&gt;Radeon&lt;span class="w"&gt; &lt;/span&gt;Graphics&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;renoir,&lt;span class="w"&gt; &lt;/span&gt;LLVM&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;.0.7,&lt;span class="w"&gt; &lt;/span&gt;DRM&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.52,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;.4.11-zen1-1-zen&lt;span class="o"&gt;)&lt;/span&gt;
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-5" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-5" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-5"&gt;&lt;/a&gt;vainfo:&lt;span class="w"&gt; &lt;/span&gt;Supported&lt;span class="w"&gt; &lt;/span&gt;profile&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;entrypoints
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-6" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-6" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileMPEG2Simple&lt;span class="w"&gt;            &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-7" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-7" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileMPEG2Main&lt;span class="w"&gt;              &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-8" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-8" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileVC1Simple&lt;span class="w"&gt;              &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-9" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-9" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileVC1Main&lt;span class="w"&gt;                &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-10" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-10" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-10"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileVC1Advanced&lt;span class="w"&gt;            &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-11" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-11" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileH264ConstrainedBaseline:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-12" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-12" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileH264ConstrainedBaseline:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointEncSlice
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-13" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-13" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileH264Main&lt;span class="w"&gt;               &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-14" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-14" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileH264Main&lt;span class="w"&gt;               &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointEncSlice
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-15" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-15" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-15"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileH264High&lt;span class="w"&gt;               &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-16" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-16" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-16"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileH264High&lt;span class="w"&gt;               &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointEncSlice
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-17" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-17" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-17"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileHEVCMain&lt;span class="w"&gt;               &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-18" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-18" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-18"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileHEVCMain&lt;span class="w"&gt;               &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointEncSlice
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-19" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-19" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-19"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileHEVCMain10&lt;span class="w"&gt;             &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-20" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-20" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-20"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileHEVCMain10&lt;span class="w"&gt;             &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointEncSlice
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-21" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-21" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-21"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileJPEGBaseline&lt;span class="w"&gt;           &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-22" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-22" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-22"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileVP9Profile0&lt;span class="w"&gt;            &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-23" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-23" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-23"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileVP9Profile2&lt;span class="w"&gt;            &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVLD
&lt;a id="rest_code_ab5607864a894745984c6c8e6d02ffaf-24" name="rest_code_ab5607864a894745984c6c8e6d02ffaf-24" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_ab5607864a894745984c6c8e6d02ffaf-24"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;VAProfileNone&lt;span class="w"&gt;                   &lt;/span&gt;:&lt;span class="w"&gt;       &lt;/span&gt;VAEntrypointVideoProc
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="about-config"&gt;
&lt;h2&gt;第一步：修改 &lt;a class="reference external" href="about:config"&gt;about:config&lt;/a&gt; 配置&lt;/h2&gt;
&lt;p&gt;打开 &lt;a class="reference external" href="about:config"&gt;about:config&lt;/a&gt; 进行如下配置，强制开启 WebRender。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_4765fbff07aa418295262be38efecb1f-1" name="rest_code_4765fbff07aa418295262be38efecb1f-1" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_4765fbff07aa418295262be38efecb1f-1"&gt;&lt;/a&gt;gfx.webrender.all=true
&lt;a id="rest_code_4765fbff07aa418295262be38efecb1f-2" name="rest_code_4765fbff07aa418295262be38efecb1f-2" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_4765fbff07aa418295262be38efecb1f-2"&gt;&lt;/a&gt;gfx.webrender.compositor=true
&lt;a id="rest_code_4765fbff07aa418295262be38efecb1f-3" name="rest_code_4765fbff07aa418295262be38efecb1f-3" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_4765fbff07aa418295262be38efecb1f-3"&gt;&lt;/a&gt;gfx.webrender.compositor.force-enabled=true
&lt;a id="rest_code_4765fbff07aa418295262be38efecb1f-4" name="rest_code_4765fbff07aa418295262be38efecb1f-4" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_4765fbff07aa418295262be38efecb1f-4"&gt;&lt;/a&gt;
&lt;a id="rest_code_4765fbff07aa418295262be38efecb1f-5" name="rest_code_4765fbff07aa418295262be38efecb1f-5" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_4765fbff07aa418295262be38efecb1f-5"&gt;&lt;/a&gt;media.ffmpeg.vaapi.enabled=true
&lt;a id="rest_code_4765fbff07aa418295262be38efecb1f-6" name="rest_code_4765fbff07aa418295262be38efecb1f-6" href="https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/#rest_code_4765fbff07aa418295262be38efecb1f-6"&gt;&lt;/a&gt;media.hardware-video-decoding.force-enabled=true
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="firefox-hardware-video-acceleration"&gt;
&lt;h2&gt;第二步：重启 Firefox ，确认 Hardware video acceleration 是否生效&lt;/h2&gt;
&lt;p&gt;重启 Firefox，打开 &lt;a class="reference external" href="about:support"&gt;about:support&lt;/a&gt; 页面。&lt;/p&gt;
&lt;p&gt;确认 WEBRENDER、HARDWARE_VIDEO_DECODING 已经开启。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/linux-firefox-hw-video-acceleration/webrender.png"&gt;&lt;img alt="/images/2023/linux-firefox-hw-video-acceleration/webrender.png" src="https://blog.bgme.me/images/2023/linux-firefox-hw-video-acceleration/webrender.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;WEBRENDER&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/linux-firefox-hw-video-acceleration/hw_video_decoding.png"&gt;&lt;img alt="/images/2023/linux-firefox-hw-video-acceleration/hw_video_decoding.png" src="https://blog.bgme.me/images/2023/linux-firefox-hw-video-acceleration/hw_video_decoding.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;HARDWARE_VIDEO_DECODING&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;这里着重说明一点，你有可能在 env 一栏中看到 &lt;code class="docutils literal"&gt;Blocklisted; failure code FEATURE_FAILURE_DISABLE_RELEASE_OR_BETA&lt;/code&gt;、 &lt;code class="docutils literal"&gt;Blocklisted; failure code FEATURE_HARDWARE_VIDEO_DECODING_DISABLE&lt;/code&gt; 这样的内容。&lt;/p&gt;
&lt;p&gt;但只要看到 user 一栏写着 &lt;code class="docutils literal"&gt;force_enabled&lt;/code&gt;、 &lt;code class="docutils literal"&gt;Force enabled by pref&lt;/code&gt; ，就说明已经开启成功了。
系统默认的配置已经被用户设置所覆盖。&lt;/p&gt;
&lt;p&gt;Arch Linux Wiki 存在一定的误导，并不是看到 &lt;code class="docutils literal"&gt;FEATURE_HARDWARE_VIDEO_DECODING_DISABLE&lt;/code&gt; 就必须使用 &lt;a class="reference external" href="https://aur.archlinux.org/packages/firefox-vaapi/"&gt;firefox-vaapi&lt;/a&gt; ，费时费力修改源码重新编译。
只需要到 &lt;a class="reference external" href="about:config"&gt;about:config&lt;/a&gt; 修改上步提到的那几个配置项就OK了。&lt;/p&gt;
&lt;p&gt;firefox-vaapi 只是让浏览器不再显示错误信息而已，完全没有必要。&lt;/p&gt;
&lt;p&gt;再向下拉到 Media 一节，看到如下的表格便说明 Hardware video acceleration 已经成功开启生效。&lt;/p&gt;
&lt;figure&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/linux-firefox-hw-video-acceleration/media.png"&gt;&lt;img alt="/images/2023/linux-firefox-hw-video-acceleration/media.png" src="https://blog.bgme.me/images/2023/linux-firefox-hw-video-acceleration/media.png"&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/section&gt;</description><category>Firefox</category><guid>https://blog.bgme.me/posts/2023/how-to-enable-firefox-hardware-video-acceleration-on-linux-for-amd-gpu/</guid><pubDate>Sat, 19 Aug 2023 13:08:37 GMT</pubDate></item><item><title>How to clean up the synapse database</title><link>https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/</link><dc:creator>无影人</dc:creator><description>&lt;section id="step-1-delete-unused-large-rooms"&gt;
&lt;h2&gt;Step 1: delete unused large rooms&lt;/h2&gt;
&lt;section id="step-1-1-find-large-rooms"&gt;
&lt;h3&gt;Step 1.1: Find large rooms&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code sql"&gt;&lt;a id="rest_code_d2e579f01f5e4f3a988cc2464c019055-1" name="rest_code_d2e579f01f5e4f3a988cc2464c019055-1" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_d2e579f01f5e4f3a988cc2464c019055-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;current_state_events&lt;/span&gt;
&lt;a id="rest_code_d2e579f01f5e4f3a988cc2464c019055-2" name="rest_code_d2e579f01f5e4f3a988cc2464c019055-2" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_d2e579f01f5e4f3a988cc2464c019055-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;room_stats_current&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;a id="rest_code_d2e579f01f5e4f3a988cc2464c019055-3" name="rest_code_d2e579f01f5e4f3a988cc2464c019055-3" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_d2e579f01f5e4f3a988cc2464c019055-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;LEFT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;room_stats_state&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_d2e579f01f5e4f3a988cc2464c019055-4" name="rest_code_d2e579f01f5e4f3a988cc2464c019055-4" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_d2e579f01f5e4f3a988cc2464c019055-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;current_state_events&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;
&lt;a id="rest_code_d2e579f01f5e4f3a988cc2464c019055-5" name="rest_code_d2e579f01f5e4f3a988cc2464c019055-5" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_d2e579f01f5e4f3a988cc2464c019055-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code sql"&gt;&lt;a id="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-1" name="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-1" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-2" name="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-2" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;state_groups_state&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;a id="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-3" name="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-3" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;LEFT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;room_stats_state&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rss&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-4" name="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-4" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rss&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;
&lt;a id="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-5" name="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-5" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;
&lt;a id="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-6" name="rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-6" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_97f4a26c2f654ae99bfc3e4c80d19d54-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a class="reference external" href="https://matrix-org.github.io/synapse/latest/usage/administration/useful_sql_for_admins.html#show-top-20-larger-rooms-by-state-events-count"&gt;https://matrix-org.github.io/synapse/latest/usage/administration/useful_sql_for_admins.html#show-top-20-larger-rooms-by-state-events-count&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;
&lt;section id="step-1-2-use-admin-api-purge-the-unused-large-rooms"&gt;
&lt;h3&gt;Step 1.2: Use Admin API Purge the unused large rooms&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#version-2-new-version"&gt;https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#version-2-new-version&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_6ab21fb3308143bcabf2c8b9b2d9e1f6-1" name="rest_code_6ab21fb3308143bcabf2c8b9b2d9e1f6-1" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_6ab21fb3308143bcabf2c8b9b2d9e1f6-1"&gt;&lt;/a&gt;curl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:8008/_synapse/admin/v1/rooms/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ROOMID&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-X&lt;span class="w"&gt; &lt;/span&gt;DELETE&lt;span class="w"&gt; &lt;/span&gt;-H&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'Accept: application/json'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-H&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'Referer: http://localhost:8080/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-H&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"authorization: Bearer &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOKEN&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--data&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'{ "purge": true, "message": "Sorry - kicking you out to clean up the database" }'&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="step-1-3-delete-orphan-state-groups-state-and-state-groups"&gt;
&lt;h3&gt;Step 1.3: Delete orphan &lt;code class="docutils literal"&gt;state_groups_state&lt;/code&gt; and &lt;code class="docutils literal"&gt;state_groups&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;After using the Admin API to purge the rooms, but only removes the data in the &lt;code class="docutils literal"&gt;events&lt;/code&gt; table, and there are still a lot of related room data in the &lt;code class="docutils literal"&gt;state_groups_state&lt;/code&gt; and &lt;code class="docutils literal"&gt;state_groups&lt;/code&gt; tables (the main space occupation).
This may be a synapse bug.&lt;/p&gt;
&lt;p&gt;So you need to remove them manually.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/matrix-org/synapse/issues/12821#issuecomment-1295773504"&gt;https://github.com/matrix-org/synapse/issues/12821#issuecomment-1295773504&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code sql"&gt;&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-1" name="rest_code_012a584b729e451395b99366c4b9f09b-1" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-2" name="rest_code_012a584b729e451395b99366c4b9f09b-2" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-2"&gt;&lt;/a&gt;&lt;span class="n"&gt;state_groups_state&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-3" name="rest_code_012a584b729e451395b99366c4b9f09b-3" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-3"&gt;&lt;/a&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-4" name="rest_code_012a584b729e451395b99366c4b9f09b-4" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-4"&gt;&lt;/a&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-5" name="rest_code_012a584b729e451395b99366c4b9f09b-5" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-6" name="rest_code_012a584b729e451395b99366c4b9f09b-6" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;DISTINCT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state_groups&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;room_id_gone&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-7" name="rest_code_012a584b729e451395b99366c4b9f09b-7" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-8" name="rest_code_012a584b729e451395b99366c4b9f09b-8" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;state_groups&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-9" name="rest_code_012a584b729e451395b99366c4b9f09b-9" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;LEFT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-10" name="rest_code_012a584b729e451395b99366c4b9f09b-10" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-10"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-11" name="rest_code_012a584b729e451395b99366c4b9f09b-11" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-12" name="rest_code_012a584b729e451395b99366c4b9f09b-12" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-13" name="rest_code_012a584b729e451395b99366c4b9f09b-13" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;room_id_gone&lt;/span&gt;
&lt;a id="rest_code_012a584b729e451395b99366c4b9f09b-14" name="rest_code_012a584b729e451395b99366c4b9f09b-14" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_012a584b729e451395b99366c4b9f09b-14"&gt;&lt;/a&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code sql"&gt;&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-1" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-1" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-2" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-2" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-2"&gt;&lt;/a&gt;&lt;span class="n"&gt;state_groups&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-3" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-3" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-3"&gt;&lt;/a&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-4" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-4" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-4"&gt;&lt;/a&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-5" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-5" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-6" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-6" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;DISTINCT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state_groups&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;room_id_gone&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-7" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-7" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-8" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-8" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;state_groups&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-9" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-9" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;LEFT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-10" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-10" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-10"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-11" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-11" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;room_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-12" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-12" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-13" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-13" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;room_id_gone&lt;/span&gt;
&lt;a id="rest_code_ff3db68906c24d7597e1ee21e8b87eab-14" name="rest_code_ff3db68906c24d7597e1ee21e8b87eab-14" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_ff3db68906c24d7597e1ee21e8b87eab-14"&gt;&lt;/a&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="step-2-run-synapse-auto-compressor"&gt;
&lt;h2&gt;Step 2: Run synapse_auto_compressor&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/matrix-org/rust-synapse-compress-state"&gt;https://github.com/matrix-org/rust-synapse-compress-state&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-1" name="rest_code_25ba0031e2154631b390ec6e6783ba23-1" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-1"&gt;&lt;/a&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://github.com/matrix-org/rust-synapse-compress-state.git
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-2" name="rest_code_25ba0031e2154631b390ec6e6783ba23-2" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-2"&gt;&lt;/a&gt;
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-3" name="rest_code_25ba0031e2154631b390ec6e6783ba23-3" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-3"&gt;&lt;/a&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;rust-synapse-compress-state/
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-4" name="rest_code_25ba0031e2154631b390ec6e6783ba23-4" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-4"&gt;&lt;/a&gt;cargo&lt;span class="w"&gt; &lt;/span&gt;build&lt;span class="w"&gt; &lt;/span&gt;-r
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-5" name="rest_code_25ba0031e2154631b390ec6e6783ba23-5" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-6" name="rest_code_25ba0031e2154631b390ec6e6783ba23-6" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-6"&gt;&lt;/a&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;synapse_auto_compressor/
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-7" name="rest_code_25ba0031e2154631b390ec6e6783ba23-7" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-7"&gt;&lt;/a&gt;cargo&lt;span class="w"&gt; &lt;/span&gt;build&lt;span class="w"&gt; &lt;/span&gt;-r
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-8" name="rest_code_25ba0031e2154631b390ec6e6783ba23-8" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-9" name="rest_code_25ba0031e2154631b390ec6e6783ba23-9" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-9"&gt;&lt;/a&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;../target/release/
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-10" name="rest_code_25ba0031e2154631b390ec6e6783ba23-10" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-10"&gt;&lt;/a&gt;
&lt;a id="rest_code_25ba0031e2154631b390ec6e6783ba23-11" name="rest_code_25ba0031e2154631b390ec6e6783ba23-11" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_25ba0031e2154631b390ec6e6783ba23-11"&gt;&lt;/a&gt;./synapse_auto_compressor&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;postgresql://synapse_user:&lt;span class="o"&gt;[&lt;/span&gt;password&lt;span class="o"&gt;]&lt;/span&gt;@&lt;span class="o"&gt;[&lt;/span&gt;host&lt;span class="o"&gt;]&lt;/span&gt;/synapse&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10000000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;~/synapse_auto_compressor.log
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="step-3-vacuum-database"&gt;
&lt;h2&gt;Step 3: Vacuum Database&lt;/h2&gt;
&lt;div class="code"&gt;&lt;pre class="code sql"&gt;&lt;a id="rest_code_30e8489f3a37496bae4a6cbe8087230a-1" name="rest_code_30e8489f3a37496bae4a6cbe8087230a-1" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_30e8489f3a37496bae4a6cbe8087230a-1"&gt;&lt;/a&gt;&lt;span class="k"&gt;REINDEX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;VERBOSE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DATABASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;synapse&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_30e8489f3a37496bae4a6cbe8087230a-2" name="rest_code_30e8489f3a37496bae4a6cbe8087230a-2" href="https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/#rest_code_30e8489f3a37496bae4a6cbe8087230a-2"&gt;&lt;/a&gt;&lt;span class="k"&gt;VACUUM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;VERBOSE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;Before:&lt;/p&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/how-to-clean-up-the-synapse-database/01.png"&gt;&lt;img alt="/images/2023/how-to-clean-up-the-synapse-database/01.thumbnail.png" src="https://blog.bgme.me/images/2023/how-to-clean-up-the-synapse-database/01.thumbnail.png"&gt;&lt;/a&gt;
&lt;p&gt;After:&lt;/p&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2023/how-to-clean-up-the-synapse-database/02.png"&gt;&lt;img alt="/images/2023/how-to-clean-up-the-synapse-database/02.thumbnail.png" src="https://blog.bgme.me/images/2023/how-to-clean-up-the-synapse-database/02.thumbnail.png"&gt;&lt;/a&gt;
&lt;/section&gt;</description><category>Matrix</category><guid>https://blog.bgme.me/posts/2023/how-to-clean-up-the-synapse-database/</guid><pubDate>Sat, 10 Jun 2023 14:17:31 GMT</pubDate></item><item><title>修复 Proton 运行 RPGMaker 游戏图像出错问题</title><link>https://blog.bgme.me/posts/2023/fix-the-problem-of-proton-running-rpgmaker-game-image-error/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;现在，你可以在 Linux 下通过 Proton （Steam Play） 来运行一些只支持 Windows 平台的游戏。比如说各类 RPGMaker 游戏。&lt;/p&gt;
&lt;p&gt;但运行 RPGMaker 游戏，可能会出现一些图像问题，例如：黑屏、花屏等。&lt;/p&gt;
&lt;img alt="/images/2023/proton-rpgmaker/01.png" src="https://blog.bgme.me/images/2023/proton-rpgmaker/01.png"&gt;
&lt;!-- TEASER_END --&gt;
&lt;img alt="/images/2023/proton-rpgmaker/02.png" src="https://blog.bgme.me/images/2023/proton-rpgmaker/02.png"&gt;
&lt;p&gt;我不幸也遇到了类似的问题，搜索了一番之后找到了相应的解决办法，在这里分享给大家。&lt;/p&gt;
&lt;p&gt;步骤一：打开游戏本体所在目录（右键菜单 &amp;gt; 管理 &amp;gt; 浏览本地文件）&lt;/p&gt;
&lt;p&gt;步骤二：创建 &lt;code class="docutils literal"&gt;dxvk.conf&lt;/code&gt; 文件&lt;/p&gt;
&lt;p&gt;内容如下：&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_7d233b556ead4271a56a4af6ef5c17ab-1" name="rest_code_7d233b556ead4271a56a4af6ef5c17ab-1" href="https://blog.bgme.me/posts/2023/fix-the-problem-of-proton-running-rpgmaker-game-image-error/#rest_code_7d233b556ead4271a56a4af6ef5c17ab-1"&gt;&lt;/a&gt;dxgi.deferSurfaceCreation = True
&lt;a id="rest_code_7d233b556ead4271a56a4af6ef5c17ab-2" name="rest_code_7d233b556ead4271a56a4af6ef5c17ab-2" href="https://blog.bgme.me/posts/2023/fix-the-problem-of-proton-running-rpgmaker-game-image-error/#rest_code_7d233b556ead4271a56a4af6ef5c17ab-2"&gt;&lt;/a&gt;d3d9.deferSurfaceCreation = True
&lt;a id="rest_code_7d233b556ead4271a56a4af6ef5c17ab-3" name="rest_code_7d233b556ead4271a56a4af6ef5c17ab-3" href="https://blog.bgme.me/posts/2023/fix-the-problem-of-proton-running-rpgmaker-game-image-error/#rest_code_7d233b556ead4271a56a4af6ef5c17ab-3"&gt;&lt;/a&gt;d3d11.maxFeatureLevel = 9_3
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;此时，再尝试运行游戏，便可以发现图像已恢复正常。&lt;/p&gt;
&lt;img alt="/images/2023/proton-rpgmaker/03.png" src="https://blog.bgme.me/images/2023/proton-rpgmaker/03.png"&gt;
&lt;p&gt;参考资料： &lt;a class="reference external" href="https://github.com/ValveSoftware/Proton/issues/3694#issuecomment-1067313588"&gt;https://github.com/ValveSoftware/Proton/issues/3694#issuecomment-1067313588&lt;/a&gt;&lt;/p&gt;</description><category>Proton</category><category>RPGMaker</category><category>Steam</category><guid>https://blog.bgme.me/posts/2023/fix-the-problem-of-proton-running-rpgmaker-game-image-error/</guid><pubDate>Tue, 02 May 2023 08:19:08 GMT</pubDate></item><item><title>Mastodon 域名设置全讲解</title><link>https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;很早之前写过一篇《&lt;a class="reference external" href="https://blog.bgme.me/posts/nginx-reverser-proxy-for-mastodon/"&gt;使用 Nginx 反代 Mastodon&lt;/a&gt;》，但那篇主要指对没有站点管理权的情况下如何添加反代域名，而且年代久远一些内容也需要更新。&lt;/p&gt;
&lt;p&gt;应嘎嘎的要求，今天特别写一篇博文讲一讲 Mastodon 域名设置相关的内容。&lt;/p&gt;
&lt;p&gt;本文篇幅可能会比较长，前半部分将大致讲解 Mastodon 的架构以及域名相关设置，后半部分将讲解如何更换 WEB_DOMAIN、如何添加反代域名。&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;nav class="contents" id="topic-1" role="doc-toc"&gt;
&lt;p class="topic-title"&gt;目录&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#mastodon" id="toc-entry-1"&gt;Mastodon 大体架构&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#mastodon-1" id="toc-entry-2"&gt;Mastodon 服务发现流程&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#mastodon-2" id="toc-entry-3"&gt;Mastodon 域名配置&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#local-domain" id="toc-entry-4"&gt;LOCAL_DOMAIN&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#web-domain" id="toc-entry-5"&gt;WEB_DOMAIN&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#alternate-domains" id="toc-entry-6"&gt;ALTERNATE_DOMAINS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#streaming-api-base-url" id="toc-entry-7"&gt;STREAMING_API_BASE_URL&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#cdn-host" id="toc-entry-8"&gt;CDN_HOST&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#s3-alias-host" id="toc-entry-9"&gt;S3_ALIAS_HOST&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#section-1" id="toc-entry-10"&gt;域名注意事项&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#section-2" id="toc-entry-11"&gt;实际操作篇&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#mastodon-3" id="toc-entry-12"&gt;在不同域名托管 Mastodon 服务&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#section-3" id="toc-entry-13"&gt;添加反代域名&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#section-4" id="toc-entry-14"&gt;参考资料&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;section id="mastodon"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-1" role="doc-backlink"&gt;Mastodon 大体架构&lt;/a&gt;&lt;/h2&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/Mastodon%E6%9E%B6%E6%9E%84%E5%9B%BE.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/Mastodon架构图.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/Mastodon%E6%9E%B6%E6%9E%84%E5%9B%BE.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;Mastodon 大体架构图&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Mastodon 是一个前后端分离的应用，前端是使用 React 写成的单页应用，负责交互与展示；后端由 Ruby 写成负表提供 API 。&lt;/p&gt;
&lt;p&gt;当用户访问时，HTML、XHR 请求反代至 Puma 服务， websocket 请求反代至 Node 服务，其余静态资源由 nginx 响应。&lt;/p&gt;
&lt;p&gt;因此，Mastodon 也可以像 Pleroma 那样使用替换前端，例如：&lt;a class="reference external" href="https://github.com/NanaMorse/Cuckoo.Plus"&gt;Cuckoo+&lt;/a&gt; 、&lt;a class="reference external" href="https://github.com/nolanlawson/pinafore"&gt;Pinafore&lt;/a&gt; 。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/pinafore.bgme.bid.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/pinafore.bgme.bid.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/pinafore.bgme.bid.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;pinafore.bgme.bid&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/section&gt;
&lt;section id="mastodon-1"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-2" role="doc-backlink"&gt;Mastodon 服务发现流程&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;众所周知，Mastodon 是一个基于 ActivityPub 协议联邦式的去中心化平台。&lt;/p&gt;
&lt;p&gt;那么问题来了，Mastodon 是如何发现远程实例的？或者说当你在编辑框中写下 &lt;code class="docutils literal"&gt;@user@example.org&lt;/code&gt; 后，Mastodon 是如何将其翻译为 ActivityPub 协议所需的 HTTPS URI 的？&lt;/p&gt;
&lt;p&gt;Mastodon 帐户的两个身份标识：&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;webfinger &lt;code class="docutils literal"&gt;acct&lt;/code&gt; URI：跨实例的可验证的全局用户身份标识。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;actor URI：用于 federation 过程的其他所有方面。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="mastodon-2"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-3" role="doc-backlink"&gt;Mastodon 域名配置&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在 Mastodon 配置文件中，与用户使用相关的域名选项有 &lt;code class="docutils literal"&gt;LOCAL_DOMAIN&lt;/code&gt;、&lt;code class="docutils literal"&gt;WEB_DOMAIN&lt;/code&gt;、&lt;code class="docutils literal"&gt;ALTERNATE_DOMAINS&lt;/code&gt;、&lt;code class="docutils literal"&gt;STREAMING_API_BASE_URL&lt;/code&gt;、&lt;code class="docutils literal"&gt;CDN_HOST&lt;/code&gt;、&lt;code class="docutils literal"&gt;S3_ALIAS_HOST&lt;/code&gt;。&lt;/p&gt;
&lt;section id="local-domain"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-4" role="doc-backlink"&gt;LOCAL_DOMAIN&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;服务器在 Fediverse 网络中唯一标识，用于生成帐户 &lt;code class="docutils literal"&gt;acct&lt;/code&gt; URI，确认后无法更改，修改该项配置将导致帐户 &lt;code class="docutils literal"&gt;acct&lt;/code&gt; URI 改变，远程服务器会将现有帐户视为不同于之前的全新帐户。&lt;/p&gt;
&lt;p&gt;例如： &lt;code class="docutils literal"&gt;@qpomelo@mastodon.qpomelo.app&lt;/code&gt; 将实例的 &lt;code class="docutils literal"&gt;LOCAL_DOMAIN&lt;/code&gt; 由 &lt;code class="docutils literal"&gt;mastodon.qpomelo.app&lt;/code&gt; 改为 &lt;code class="docutils literal"&gt;qpomelo.cc&lt;/code&gt;，其acct也从 &lt;code class="docutils literal"&gt;acct:qpomelo@mastodon.qpomelo.app&lt;/code&gt; 变更为 &lt;code class="docutils literal"&gt;acct:qpomelo@qpomelo.cc&lt;/code&gt; 。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/local_domain_mastodon.qpomelo.app.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/local_domain_mastodon.qpomelo.app.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/local_domain_mastodon.qpomelo.app.thumbnail.png" style="height: 15em;"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;@qpomelo@mastodon.qpomelo.app&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/local_domain_qpomelo.cc.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/local_domain_qpomelo.cc.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/local_domain_qpomelo.cc.thumbnail.png" style="height: 15em;"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;@qpomelo@qpomelo.cc&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;虽然实际上是同一个帐户，但由于acct不同，被远程实例视为两个不同的帐户。&lt;/p&gt;
&lt;/section&gt;
&lt;section id="web-domain"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-5" role="doc-backlink"&gt;WEB_DOMAIN&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;可选配置项，默认与 &lt;code class="docutils literal"&gt;LOCAL_DOMAIN&lt;/code&gt; 相同，用于生成网页内容，诸如：&lt;code class="docutils literal"&gt;actor&lt;/code&gt; 、 &lt;code class="docutils literal"&gt;inbox&lt;/code&gt; 等。通过设置 &lt;code class="docutils literal"&gt;WEB_DOMAIN&lt;/code&gt;，可以将 Mastodon 服务运行于另一域名。&lt;/p&gt;
&lt;p&gt;例如：假设 &lt;code class="docutils literal"&gt;bgme.me&lt;/code&gt; 已经存在其它服务，将 &lt;code class="docutils literal"&gt;LOCAL_DOMAIN&lt;/code&gt; 设为 &lt;code class="docutils literal"&gt;bgme.me&lt;/code&gt;，将 &lt;code class="docutils literal"&gt;WEB_DOMAIN&lt;/code&gt; 设为 &lt;code class="docutils literal"&gt;mastodon.bgme.me&lt;/code&gt;，便可以保证帐户 &lt;code class="docutils literal"&gt;acct&lt;/code&gt; URI 以 &lt;code class="docutils literal"&gt;bgme.me&lt;/code&gt; 结尾的情况下将 Mastodon 相关服务运行在 &lt;code class="docutils literal"&gt;mastodon.bgme.me&lt;/code&gt; 域名下。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/web_domain_admin_ui.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/web_domain_admin_ui.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/web_domain_admin_ui.thumbnail.png" style="height: 15em;"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;@naraku@naraku.cc&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;style&gt;
.code.httpie {
    max-height: 20em;
    overflow: scroll;
    white-space: pre;
}
&lt;/style&gt;&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_69365cd8431b4786ab08114b1fe6d4f5-1" name="rest_code_69365cd8431b4786ab08114b1fe6d4f5-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_69365cd8431b4786ab08114b1fe6d4f5-1"&gt;&lt;/a&gt;http&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://naraku.cc/.well-known/host-meta"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;HBhb
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code text httpie"&gt;&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-1" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-1"&gt;&lt;/a&gt;GET /.well-known/host-meta HTTP/1.1
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-2" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-2" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-2"&gt;&lt;/a&gt;Accept: */*
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-3" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-3" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-3"&gt;&lt;/a&gt;Accept-Encoding: gzip, deflate, br
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-4" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-4" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-4"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-5" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-5" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-5"&gt;&lt;/a&gt;Host: naraku.cc
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-6" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-6" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-6"&gt;&lt;/a&gt;User-Agent: HTTPie/3.2.1
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-7" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-7" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-7"&gt;&lt;/a&gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-8" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-8" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-9" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-9" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-10" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-10" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-10"&gt;&lt;/a&gt;HTTP/1.1 301 Moved Permanently
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-11" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-11" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-11"&gt;&lt;/a&gt;CF-Cache-Status: DYNAMIC
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-12" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-12" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-12"&gt;&lt;/a&gt;CF-RAY: 77ef38a2ef452ac1-LAX
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-13" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-13" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-13"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-14" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-14" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-14"&gt;&lt;/a&gt;Content-Type: text/html
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-15" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-15" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-15"&gt;&lt;/a&gt;Date: Sun, 25 Dec 2022 05:36:49 GMT
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-16" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-16" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-16"&gt;&lt;/a&gt;NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-17" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-17" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-17"&gt;&lt;/a&gt;Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=iZw4%2BWLYieZU2hKsOvMH4bRt1nJSgQkvZgaiWgY7GsvaBWsDvOB8W0sLcPo7LHzmungp42AkWLkEfcU%2BTG2hrK%2F6jSOTLMlOkNkNNJVna7CjhUaukV%2FOvBrf6Mu5izCV0HKz9BfZq%2FA%3D"}],"group":"cf-nel","max_age":604800}
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-18" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-18" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-18"&gt;&lt;/a&gt;Server: cloudflare
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-19" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-19" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-19"&gt;&lt;/a&gt;Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-20" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-20" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-20"&gt;&lt;/a&gt;Transfer-Encoding: chunked
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-21" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-21" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-21"&gt;&lt;/a&gt;X-Content-Type-Options: nosniff
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-22" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-22" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-22"&gt;&lt;/a&gt;access-control-allow-origin: *
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-23" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-23" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-23"&gt;&lt;/a&gt;alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-24" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-24" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-24"&gt;&lt;/a&gt;location: https://mtd.naraku.cc/.well-known/host-meta
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-25" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-25" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-25"&gt;&lt;/a&gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-26" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-26" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-26"&gt;&lt;/a&gt;&amp;lt;html&amp;gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-27" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-27" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-27"&gt;&lt;/a&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;301 Moved Permanently&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-28" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-28" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-28"&gt;&lt;/a&gt;&amp;lt;body&amp;gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-29" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-29" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-29"&gt;&lt;/a&gt;&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;301 Moved Permanently&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-30" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-30" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-30"&gt;&lt;/a&gt;&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-31" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-31" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-31"&gt;&lt;/a&gt;&amp;lt;/body&amp;gt;
&lt;a id="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-32" name="rest_code_e0a59cae85b0459c8bb5555ad3b700b5-32" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_e0a59cae85b0459c8bb5555ad3b700b5-32"&gt;&lt;/a&gt;&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_131918af57674dad8a60f259474f4835-1" name="rest_code_131918af57674dad8a60f259474f4835-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_131918af57674dad8a60f259474f4835-1"&gt;&lt;/a&gt;http&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mtd.naraku.cc/.well-known/host-meta"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;HBhb
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code text httpie"&gt;&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-1" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-1"&gt;&lt;/a&gt;GET /.well-known/host-meta HTTP/1.1
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-2" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-2" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-2"&gt;&lt;/a&gt;Accept: */*
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-3" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-3" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-3"&gt;&lt;/a&gt;Accept-Encoding: gzip, deflate, br
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-4" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-4" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-4"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-5" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-5" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-5"&gt;&lt;/a&gt;Host: mtd.naraku.cc
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-6" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-6" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-6"&gt;&lt;/a&gt;User-Agent: HTTPie/3.2.1
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-7" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-7" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-7"&gt;&lt;/a&gt;
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-8" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-8" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-9" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-9" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-10" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-10" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-10"&gt;&lt;/a&gt;HTTP/1.1 200 OK
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-11" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-11" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-11"&gt;&lt;/a&gt;CF-Cache-Status: DYNAMIC
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-12" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-12" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-12"&gt;&lt;/a&gt;CF-RAY: 77ef36c5efab527b-LAX
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-13" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-13" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-13"&gt;&lt;/a&gt;Cache-Control: max-age=259200, public
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-14" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-14" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-14"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-15" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-15" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-15"&gt;&lt;/a&gt;Content-Type: application/xrd+xml; charset=utf-8
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-16" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-16" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-16"&gt;&lt;/a&gt;Date: Sun, 25 Dec 2022 05:35:33 GMT
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-17" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-17" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-17"&gt;&lt;/a&gt;NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-18" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-18" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-18"&gt;&lt;/a&gt;Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=oXXheIvbL6bzP4E2Kp%2F6wgvMn8cvr2bXJgXNl8bO%2F86r4Gdy4z7fp3y7SMwVAAORKiy5Qh5rjVx6TKaLhpnHT7D2Xwh58g1r1W4HU6n%2BnJgnZZWaeqqnyMhZKEpHXTkJMkTwKT4FUtkefGU%2F"}],"group":"cf-nel","max_age":604800}
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-19" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-19" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-19"&gt;&lt;/a&gt;Server: cloudflare
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-20" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-20" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-20"&gt;&lt;/a&gt;Transfer-Encoding: chunked
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-21" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-21" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-21"&gt;&lt;/a&gt;alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-22" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-22" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-22"&gt;&lt;/a&gt;content-security-policy: base-uri 'none'; default-src 'none'; frame-ancestors 'none'; font-src 'self' https://mtd.naraku.cc; img-src 'self' https: data: blob: https://mtd.naraku.cc; style-src 'self' https://mtd.naraku.cc 'nonce-PXsk8y8bu+tcBwEB5toFkw=='; media-src 'self' https: data: https://mtd.naraku.cc; frame-src 'self' https:; manifest-src 'self' https://mtd.naraku.cc; connect-src 'self' data: blob: https://mtd.naraku.cc https://mtd.naraku.cc wss://mtd.naraku.cc; script-src 'self' https://mtd.naraku.cc 'wasm-unsafe-eval'; child-src 'self' blob: https://mtd.naraku.cc; worker-src 'self' blob: https://mtd.naraku.cc
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-23" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-23" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-23"&gt;&lt;/a&gt;etag: W/"5205d754e2b6177b4be99ecc2e1413a7"
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-24" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-24" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-24"&gt;&lt;/a&gt;permissions-policy: interest-cohort=()
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-25" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-25" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-25"&gt;&lt;/a&gt;strict-transport-security: max-age=15552000; includeSubDomains; preload
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-26" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-26" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-26"&gt;&lt;/a&gt;vary: Accept, Origin
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-27" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-27" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-27"&gt;&lt;/a&gt;x-content-type-options: nosniff
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-28" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-28" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-28"&gt;&lt;/a&gt;x-frame-options: DENY
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-29" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-29" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-29"&gt;&lt;/a&gt;x-request-id: cd29d011-08e4-4117-b31b-f1f5c0f04c4b
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-30" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-30" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-30"&gt;&lt;/a&gt;x-runtime: 0.004306
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-31" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-31" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-31"&gt;&lt;/a&gt;x-xss-protection: 0
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-32" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-32" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-32"&gt;&lt;/a&gt;
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-33" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-33" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-33"&gt;&lt;/a&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-34" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-34" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-34"&gt;&lt;/a&gt;&amp;lt;XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"&amp;gt;
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-35" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-35" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-35"&gt;&lt;/a&gt;    &amp;lt;Link rel="lrdd" template="https://mtd.naraku.cc/.well-known/webfinger?resource={uri}"/&amp;gt;
&lt;a id="rest_code_5a69bea8d7e44e4990020dd8678b87cd-36" name="rest_code_5a69bea8d7e44e4990020dd8678b87cd-36" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_5a69bea8d7e44e4990020dd8678b87cd-36"&gt;&lt;/a&gt;&amp;lt;/XRD&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_06d41d83fc2a48139aa6fedc14026572-1" name="rest_code_06d41d83fc2a48139aa6fedc14026572-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_06d41d83fc2a48139aa6fedc14026572-1"&gt;&lt;/a&gt;http&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mtd.naraku.cc/.well-known/webfinger?resource=acct:naraku@naraku.cc"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;HBhb
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code text httpie"&gt;&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-1" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-1"&gt;&lt;/a&gt;GET /.well-known/webfinger?resource=acct:naraku@naraku.cc HTTP/1.1
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-2" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-2" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-2"&gt;&lt;/a&gt;Accept: */*
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-3" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-3" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-3"&gt;&lt;/a&gt;Accept-Encoding: gzip, deflate, br
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-4" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-4" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-4"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-5" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-5" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-5"&gt;&lt;/a&gt;Host: mtd.naraku.cc
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-6" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-6" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-6"&gt;&lt;/a&gt;User-Agent: HTTPie/3.2.1
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-7" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-7" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-7"&gt;&lt;/a&gt;
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-8" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-8" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-9" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-9" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-10" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-10" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-10"&gt;&lt;/a&gt;HTTP/1.1 200 OK
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-11" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-11" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-11"&gt;&lt;/a&gt;CF-Cache-Status: DYNAMIC
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-12" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-12" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-12"&gt;&lt;/a&gt;CF-RAY: 77ef33764ff15214-LAX
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-13" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-13" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-13"&gt;&lt;/a&gt;Cache-Control: max-age=259200, public
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-14" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-14" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-14"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-15" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-15" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-15"&gt;&lt;/a&gt;Content-Type: application/jrd+json; charset=utf-8
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-16" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-16" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-16"&gt;&lt;/a&gt;Date: Sun, 25 Dec 2022 05:33:17 GMT
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-17" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-17" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-17"&gt;&lt;/a&gt;NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-18" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-18" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-18"&gt;&lt;/a&gt;Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=vQy9au8mhZlm8cgjGpTkPxU%2BOODjpwPh1jRwdMGLJZWblTWLidQyqgfQclB7%2BnFwA08aJYS2sQhoSoww7scjtJ6FQ2BVzUQan9TWZ4TIg%2BVHWx9oKDudox6VWThj9cDg9uyqp%2FU6C%2BsxqBmx"}],"group":"cf-nel","max_age":604800}
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-19" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-19" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-19"&gt;&lt;/a&gt;Server: cloudflare
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-20" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-20" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-20"&gt;&lt;/a&gt;Transfer-Encoding: chunked
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-21" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-21" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-21"&gt;&lt;/a&gt;alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-22" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-22" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-22"&gt;&lt;/a&gt;content-security-policy: base-uri 'none'; default-src 'none'; frame-ancestors 'none'; font-src 'self' https://mtd.naraku.cc; img-src 'self' https: data: blob: https://mtd.naraku.cc; style-src 'self' https://mtd.naraku.cc 'nonce-HtWXbWc6yrKVW32Aqzv4Cw=='; media-src 'self' https: data: https://mtd.naraku.cc; frame-src 'self' https:; manifest-src 'self' https://mtd.naraku.cc; connect-src 'self' data: blob: https://mtd.naraku.cc https://mtd.naraku.cc wss://mtd.naraku.cc; script-src 'self' https://mtd.naraku.cc 'wasm-unsafe-eval'; child-src 'self' blob: https://mtd.naraku.cc; worker-src 'self' blob: https://mtd.naraku.cc
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-23" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-23" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-23"&gt;&lt;/a&gt;etag: W/"b465d414f933c0013f1e193073fabba4"
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-24" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-24" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-24"&gt;&lt;/a&gt;permissions-policy: interest-cohort=()
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-25" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-25" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-25"&gt;&lt;/a&gt;strict-transport-security: max-age=15552000; includeSubDomains; preload
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-26" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-26" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-26"&gt;&lt;/a&gt;vary: Accept, Origin
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-27" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-27" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-27"&gt;&lt;/a&gt;x-content-type-options: nosniff
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-28" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-28" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-28"&gt;&lt;/a&gt;x-frame-options: DENY
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-29" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-29" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-29"&gt;&lt;/a&gt;x-request-id: f6aa211d-bab6-47a1-87a7-fdd97b511e8b
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-30" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-30" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-30"&gt;&lt;/a&gt;x-runtime: 0.008764
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-31" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-31" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-31"&gt;&lt;/a&gt;x-xss-protection: 0
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-32" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-32" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-32"&gt;&lt;/a&gt;
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-33" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-33" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-33"&gt;&lt;/a&gt;{
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-34" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-34" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-34"&gt;&lt;/a&gt;    "aliases": [
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-35" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-35" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-35"&gt;&lt;/a&gt;        "https://mtd.naraku.cc/@naraku",
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-36" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-36" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-36"&gt;&lt;/a&gt;        "https://mtd.naraku.cc/users/naraku"
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-37" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-37" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-37"&gt;&lt;/a&gt;    ],
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-38" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-38" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-38"&gt;&lt;/a&gt;    "links": [
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-39" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-39" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-39"&gt;&lt;/a&gt;        {
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-40" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-40" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-40"&gt;&lt;/a&gt;            "href": "https://mtd.naraku.cc/@naraku",
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-41" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-41" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-41"&gt;&lt;/a&gt;            "rel": "http://webfinger.net/rel/profile-page",
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-42" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-42" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-42"&gt;&lt;/a&gt;            "type": "text/html"
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-43" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-43" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-43"&gt;&lt;/a&gt;        },
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-44" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-44" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-44"&gt;&lt;/a&gt;        {
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-45" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-45" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-45"&gt;&lt;/a&gt;            "href": "https://mtd.naraku.cc/users/naraku",
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-46" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-46" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-46"&gt;&lt;/a&gt;            "rel": "self",
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-47" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-47" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-47"&gt;&lt;/a&gt;            "type": "application/activity+json"
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-48" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-48" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-48"&gt;&lt;/a&gt;        },
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-49" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-49" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-49"&gt;&lt;/a&gt;        {
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-50" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-50" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-50"&gt;&lt;/a&gt;            "rel": "http://ostatus.org/schema/1.0/subscribe",
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-51" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-51" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-51"&gt;&lt;/a&gt;            "template": "https://mtd.naraku.cc/authorize_interaction?uri={uri}"
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-52" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-52" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-52"&gt;&lt;/a&gt;        }
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-53" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-53" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-53"&gt;&lt;/a&gt;    ],
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-54" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-54" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-54"&gt;&lt;/a&gt;    "subject": "acct:naraku@naraku.cc"
&lt;a id="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-55" name="rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-55" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d2bec1e03e3e47cfa253fba5cbd8e30e-55"&gt;&lt;/a&gt;}
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_7cc2f10073294eec81bfebaa7414cdc1-1" name="rest_code_7cc2f10073294eec81bfebaa7414cdc1-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_7cc2f10073294eec81bfebaa7414cdc1-1"&gt;&lt;/a&gt;http&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mtd.naraku.cc/users/naraku"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;"Accept: application/activity+json"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;HBhb
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code text httpie"&gt;&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-1" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-1"&gt;&lt;/a&gt;GET /users/naraku HTTP/1.1
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-2" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-2" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-2"&gt;&lt;/a&gt;Accept: application/activity+json
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-3" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-3" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-3"&gt;&lt;/a&gt;Accept-Encoding: gzip, deflate, br
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-4" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-4" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-4"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-5" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-5" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-5"&gt;&lt;/a&gt;Host: mtd.naraku.cc
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-6" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-6" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-6"&gt;&lt;/a&gt;User-Agent: HTTPie/3.2.1
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-7" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-7" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-7"&gt;&lt;/a&gt;
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-8" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-8" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-9" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-9" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-10" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-10" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-10"&gt;&lt;/a&gt;HTTP/1.1 200 OK
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-11" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-11" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-11"&gt;&lt;/a&gt;CF-Cache-Status: DYNAMIC
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-12" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-12" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-12"&gt;&lt;/a&gt;CF-RAY: 77ef47fb4c7f2b50-LAX
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-13" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-13" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-13"&gt;&lt;/a&gt;Cache-Control: max-age=180, public
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-14" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-14" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-14"&gt;&lt;/a&gt;Connection: keep-alive
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-15" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-15" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-15"&gt;&lt;/a&gt;Content-Type: application/activity+json; charset=utf-8
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-16" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-16" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-16"&gt;&lt;/a&gt;Date: Sun, 25 Dec 2022 05:47:18 GMT
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-17" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-17" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-17"&gt;&lt;/a&gt;NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-18" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-18" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-18"&gt;&lt;/a&gt;Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=p9ppDYwQMI6z5Sc%2BY1FlfE2BxwxXfd%2F7yQSwwrQdyRHcKXvwUSF%2BJTug1i%2BQ7QAIz0nKix6XTVTH5fMrLNoIixkf4%2Bex29%2FavM6659cwkh8z6YN4W5A0%2B3onYsrQI%2F2pw9oWJx1Nd399QZRT"}],"group":"cf-nel","max_age":604800}
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-19" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-19" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-19"&gt;&lt;/a&gt;Server: cloudflare
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-20" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-20" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-20"&gt;&lt;/a&gt;Transfer-Encoding: chunked
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-21" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-21" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-21"&gt;&lt;/a&gt;alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-22" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-22" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-22"&gt;&lt;/a&gt;content-security-policy: base-uri 'none'; default-src 'none'; frame-ancestors 'none'; font-src 'self' https://mtd.naraku.cc; img-src 'self' https: data: blob: https://mtd.naraku.cc; style-src 'self' https://mtd.naraku.cc 'nonce-0qN1dzer3t4zyTyWue1qqw=='; media-src 'self' https: data: https://mtd.naraku.cc; frame-src 'self' https:; manifest-src 'self' https://mtd.naraku.cc; connect-src 'self' data: blob: https://mtd.naraku.cc https://mtd.naraku.cc wss://mtd.naraku.cc; script-src 'self' https://mtd.naraku.cc 'wasm-unsafe-eval'; child-src 'self' blob: https://mtd.naraku.cc; worker-src 'self' blob: https://mtd.naraku.cc
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-23" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-23" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-23"&gt;&lt;/a&gt;etag: W/"416f589000111e76eae38f5f7eb69471"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-24" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-24" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-24"&gt;&lt;/a&gt;permissions-policy: interest-cohort=()
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-25" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-25" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-25"&gt;&lt;/a&gt;referrer-policy: origin
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-26" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-26" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-26"&gt;&lt;/a&gt;strict-transport-security: max-age=15552000; includeSubDomains; preload
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-27" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-27" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-27"&gt;&lt;/a&gt;vary: Accept, Origin
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-28" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-28" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-28"&gt;&lt;/a&gt;x-content-type-options: nosniff
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-29" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-29" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-29"&gt;&lt;/a&gt;x-frame-options: DENY
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-30" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-30" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-30"&gt;&lt;/a&gt;x-request-id: 52b64673-7371-4292-b508-ef26d617f344
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-31" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-31" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-31"&gt;&lt;/a&gt;x-runtime: 0.023334
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-32" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-32" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-32"&gt;&lt;/a&gt;x-xss-protection: 0
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-33" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-33" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-33"&gt;&lt;/a&gt;
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-34" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-34" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-34"&gt;&lt;/a&gt;{
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-35" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-35" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-35"&gt;&lt;/a&gt;    "@context": [
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-36" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-36" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-36"&gt;&lt;/a&gt;        "https://www.w3.org/ns/activitystreams",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-37" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-37" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-37"&gt;&lt;/a&gt;        "https://w3id.org/security/v1",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-38" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-38" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-38"&gt;&lt;/a&gt;        {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-39" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-39" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-39"&gt;&lt;/a&gt;            "Curve25519Key": "toot:Curve25519Key",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-40" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-40" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-40"&gt;&lt;/a&gt;            "Device": "toot:Device",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-41" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-41" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-41"&gt;&lt;/a&gt;            "Ed25519Key": "toot:Ed25519Key",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-42" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-42" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-42"&gt;&lt;/a&gt;            "Ed25519Signature": "toot:Ed25519Signature",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-43" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-43" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-43"&gt;&lt;/a&gt;            "Emoji": "toot:Emoji",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-44" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-44" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-44"&gt;&lt;/a&gt;            "EncryptedMessage": "toot:EncryptedMessage",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-45" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-45" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-45"&gt;&lt;/a&gt;            "PropertyValue": "schema:PropertyValue",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-46" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-46" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-46"&gt;&lt;/a&gt;            "alsoKnownAs": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-47" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-47" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-47"&gt;&lt;/a&gt;                "@id": "as:alsoKnownAs",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-48" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-48" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-48"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-49" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-49" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-49"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-50" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-50" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-50"&gt;&lt;/a&gt;            "cipherText": "toot:cipherText",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-51" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-51" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-51"&gt;&lt;/a&gt;            "claim": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-52" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-52" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-52"&gt;&lt;/a&gt;                "@id": "toot:claim",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-53" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-53" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-53"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-54" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-54" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-54"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-55" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-55" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-55"&gt;&lt;/a&gt;            "deviceId": "toot:deviceId",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-56" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-56" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-56"&gt;&lt;/a&gt;            "devices": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-57" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-57" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-57"&gt;&lt;/a&gt;                "@id": "toot:devices",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-58" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-58" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-58"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-59" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-59" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-59"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-60" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-60" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-60"&gt;&lt;/a&gt;            "discoverable": "toot:discoverable",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-61" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-61" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-61"&gt;&lt;/a&gt;            "featured": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-62" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-62" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-62"&gt;&lt;/a&gt;                "@id": "toot:featured",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-63" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-63" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-63"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-64" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-64" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-64"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-65" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-65" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-65"&gt;&lt;/a&gt;            "featuredTags": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-66" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-66" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-66"&gt;&lt;/a&gt;                "@id": "toot:featuredTags",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-67" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-67" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-67"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-68" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-68" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-68"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-69" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-69" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-69"&gt;&lt;/a&gt;            "fingerprintKey": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-70" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-70" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-70"&gt;&lt;/a&gt;                "@id": "toot:fingerprintKey",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-71" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-71" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-71"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-72" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-72" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-72"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-73" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-73" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-73"&gt;&lt;/a&gt;            "focalPoint": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-74" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-74" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-74"&gt;&lt;/a&gt;                "@container": "@list",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-75" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-75" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-75"&gt;&lt;/a&gt;                "@id": "toot:focalPoint"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-76" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-76" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-76"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-77" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-77" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-77"&gt;&lt;/a&gt;            "identityKey": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-78" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-78" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-78"&gt;&lt;/a&gt;                "@id": "toot:identityKey",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-79" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-79" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-79"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-80" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-80" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-80"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-81" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-81" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-81"&gt;&lt;/a&gt;            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-82" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-82" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-82"&gt;&lt;/a&gt;            "messageFranking": "toot:messageFranking",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-83" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-83" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-83"&gt;&lt;/a&gt;            "messageType": "toot:messageType",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-84" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-84" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-84"&gt;&lt;/a&gt;            "movedTo": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-85" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-85" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-85"&gt;&lt;/a&gt;                "@id": "as:movedTo",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-86" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-86" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-86"&gt;&lt;/a&gt;                "@type": "@id"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-87" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-87" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-87"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-88" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-88" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-88"&gt;&lt;/a&gt;            "publicKeyBase64": "toot:publicKeyBase64",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-89" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-89" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-89"&gt;&lt;/a&gt;            "schema": "http://schema.org#",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-90" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-90" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-90"&gt;&lt;/a&gt;            "suspended": "toot:suspended",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-91" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-91" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-91"&gt;&lt;/a&gt;            "toot": "http://joinmastodon.org/ns#",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-92" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-92" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-92"&gt;&lt;/a&gt;            "value": "schema:value"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-93" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-93" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-93"&gt;&lt;/a&gt;        }
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-94" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-94" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-94"&gt;&lt;/a&gt;    ],
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-95" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-95" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-95"&gt;&lt;/a&gt;    "attachment": [
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-96" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-96" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-96"&gt;&lt;/a&gt;        {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-97" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-97" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-97"&gt;&lt;/a&gt;            "name": "Matrix",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-98" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-98" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-98"&gt;&lt;/a&gt;            "type": "PropertyValue",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-99" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-99" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-99"&gt;&lt;/a&gt;            "value": "&amp;lt;span class=\"h-card\"&amp;gt;&amp;lt;a href=\"https://mtd.naraku.cc/@naraku\" class=\"u-url mention\"&amp;gt;@&amp;lt;span&amp;gt;naraku&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;:naraku.cc"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-100" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-100" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-100"&gt;&lt;/a&gt;        }
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-101" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-101" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-101"&gt;&lt;/a&gt;    ],
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-102" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-102" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-102"&gt;&lt;/a&gt;    "devices": "https://mtd.naraku.cc/users/naraku/collections/devices",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-103" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-103" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-103"&gt;&lt;/a&gt;    "discoverable": true,
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-104" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-104" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-104"&gt;&lt;/a&gt;    "endpoints": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-105" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-105" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-105"&gt;&lt;/a&gt;        "sharedInbox": "https://mtd.naraku.cc/inbox"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-106" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-106" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-106"&gt;&lt;/a&gt;    },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-107" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-107" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-107"&gt;&lt;/a&gt;    "featured": "https://mtd.naraku.cc/users/naraku/collections/featured",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-108" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-108" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-108"&gt;&lt;/a&gt;    "featuredTags": "https://mtd.naraku.cc/users/naraku/collections/tags",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-109" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-109" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-109"&gt;&lt;/a&gt;    "followers": "https://mtd.naraku.cc/users/naraku/followers",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-110" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-110" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-110"&gt;&lt;/a&gt;    "following": "https://mtd.naraku.cc/users/naraku/following",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-111" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-111" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-111"&gt;&lt;/a&gt;    "icon": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-112" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-112" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-112"&gt;&lt;/a&gt;        "mediaType": "image/jpeg",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-113" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-113" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-113"&gt;&lt;/a&gt;        "type": "Image",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-114" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-114" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-114"&gt;&lt;/a&gt;        "url": "https://mtd.naraku.cc/system/accounts/avatars/109/513/842/758/850/375/original/355c3a2e588b4fba.jpeg"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-115" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-115" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-115"&gt;&lt;/a&gt;    },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-116" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-116" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-116"&gt;&lt;/a&gt;    "id": "https://mtd.naraku.cc/users/naraku",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-117" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-117" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-117"&gt;&lt;/a&gt;    "image": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-118" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-118" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-118"&gt;&lt;/a&gt;        "mediaType": "image/jpeg",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-119" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-119" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-119"&gt;&lt;/a&gt;        "type": "Image",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-120" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-120" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-120"&gt;&lt;/a&gt;        "url": "https://mtd.naraku.cc/system/accounts/headers/109/513/842/758/850/375/original/156276bb27f3591e.jpeg"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-121" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-121" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-121"&gt;&lt;/a&gt;    },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-122" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-122" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-122"&gt;&lt;/a&gt;    "inbox": "https://mtd.naraku.cc/users/naraku/inbox",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-123" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-123" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-123"&gt;&lt;/a&gt;    "manuallyApprovesFollowers": false,
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-124" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-124" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-124"&gt;&lt;/a&gt;    "name": "Naraku :mastodon:",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-125" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-125" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-125"&gt;&lt;/a&gt;    "outbox": "https://mtd.naraku.cc/users/naraku/outbox",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-126" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-126" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-126"&gt;&lt;/a&gt;    "preferredUsername": "naraku",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-127" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-127" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-127"&gt;&lt;/a&gt;    "publicKey": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-128" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-128" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-128"&gt;&lt;/a&gt;        "id": "https://mtd.naraku.cc/users/naraku#main-key",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-129" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-129" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-129"&gt;&lt;/a&gt;        "owner": "https://mtd.naraku.cc/users/naraku",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-130" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-130" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-130"&gt;&lt;/a&gt;        "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArYihLR7VFAiMymGUwkxo\nmMQCaHd9FD59oUfGWGKVCsJ/IkeIbi0+jM5LyeC/QdwCC/ZRgMNvS4zIQgakSRoq\nkiRN3KL3Nv9Uqo9bjC21/H6bgPiZ1aEmck9sZgN0Polxwa3SPeJ08wY8AOWPnGrg\n0kin8+7D1pkemFSfJSJSjPvc9PrKOBCVdbF74haHA99LeHo6GO75P4iLHQnlw565\nVNrUnbtH52Bcoeavrt0SDdQX239z1YqmRxAuApYlg1l4Hy/+hpmUAoCQJs3ogsjF\nTCjo1jpHgcnKRHn3gLL3o7m4+SpeUuXtFOnsXVnYujpnY0p1ejPx8gwAXcI8kwNI\ngQIDAQAB\n-----END PUBLIC KEY-----\n"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-131" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-131" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-131"&gt;&lt;/a&gt;    },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-132" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-132" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-132"&gt;&lt;/a&gt;    "published": "2022-12-14T00:00:00Z",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-133" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-133" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-133"&gt;&lt;/a&gt;    "summary": "&amp;lt;p&amp;gt;naraku.cc Admin :verify:&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Stand with Ukraine! 🇺🇦 &amp;lt;br /&amp;gt;Stand with Democracy!&amp;lt;/p&amp;gt;",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-134" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-134" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-134"&gt;&lt;/a&gt;    "tag": [
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-135" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-135" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-135"&gt;&lt;/a&gt;        {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-136" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-136" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-136"&gt;&lt;/a&gt;            "icon": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-137" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-137" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-137"&gt;&lt;/a&gt;                "mediaType": "image/gif",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-138" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-138" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-138"&gt;&lt;/a&gt;                "type": "Image",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-139" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-139" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-139"&gt;&lt;/a&gt;                "url": "https://mtd.naraku.cc/system/custom_emojis/images/2022/000/000/973/original/20775f75cba35af7.gif"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-140" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-140" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-140"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-141" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-141" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-141"&gt;&lt;/a&gt;            "id": "https://mtd.naraku.cc/emojis/973",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-142" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-142" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-142"&gt;&lt;/a&gt;            "name": ":verify:",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-143" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-143" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-143"&gt;&lt;/a&gt;            "type": "Emoji",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-144" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-144" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-144"&gt;&lt;/a&gt;            "updated": "2022-12-17T17:26:50Z"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-145" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-145" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-145"&gt;&lt;/a&gt;        },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-146" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-146" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-146"&gt;&lt;/a&gt;        {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-147" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-147" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-147"&gt;&lt;/a&gt;            "icon": {
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-148" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-148" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-148"&gt;&lt;/a&gt;                "mediaType": "image/png",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-149" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-149" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-149"&gt;&lt;/a&gt;                "type": "Image",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-150" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-150" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-150"&gt;&lt;/a&gt;                "url": "https://mtd.naraku.cc/system/custom_emojis/images/2022/000/000/099/original/56fceeecb032309c.png"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-151" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-151" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-151"&gt;&lt;/a&gt;            },
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-152" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-152" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-152"&gt;&lt;/a&gt;            "id": "https://mtd.naraku.cc/emojis/99",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-153" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-153" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-153"&gt;&lt;/a&gt;            "name": ":mastodon:",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-154" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-154" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-154"&gt;&lt;/a&gt;            "type": "Emoji",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-155" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-155" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-155"&gt;&lt;/a&gt;            "updated": "2022-12-17T10:45:48Z"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-156" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-156" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-156"&gt;&lt;/a&gt;        }
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-157" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-157" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-157"&gt;&lt;/a&gt;    ],
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-158" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-158" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-158"&gt;&lt;/a&gt;    "type": "Person",
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-159" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-159" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-159"&gt;&lt;/a&gt;    "url": "https://mtd.naraku.cc/@naraku"
&lt;a id="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-160" name="rest_code_8dc0be02e62f48ecaa583b7182eaeea6-160" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_8dc0be02e62f48ecaa583b7182eaeea6-160"&gt;&lt;/a&gt;}
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;section id="alternate-domains"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-6" role="doc-backlink"&gt;ALTERNATE_DOMAINS&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;指向该服务器的其它域名。如果有多个域名指向 Mastodon 服务器，配置 &lt;code class="docutils literal"&gt;ALTERNATE_DOMAINS&lt;/code&gt; 允许 Fediverse 服务通过其它域名发现帐户。可配置多个域名，域名之间使用逗号隔开，如 &lt;code class="docutils literal"&gt;foo.com,bar.com&lt;/code&gt; 。&lt;/p&gt;
&lt;p&gt;从实现上讲对于列入 &lt;code class="docutils literal"&gt;ALTERNATE_DOMAINS&lt;/code&gt; 的域名，Mastodon 将响应来自这些域名的 WebFinger 查询请求，故其它实例可通过相应的后缀查找到原始帐户。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/webfinger_bgme_bgme.bid.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/webfinger_bgme_bgme.bid.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/webfinger_bgme_bgme.bid.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;通过 WebFinger 协议查询 &lt;code class="docutils literal"&gt;acct:bgme@bgme.bid&lt;/code&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Mastodon v3.4.0 以后版本 &lt;a class="footnote-reference brackets" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#footnote-1" id="footnote-reference-1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt; ，出于安全性考量，Puma 只响应 &lt;code class="docutils literal"&gt;Host&lt;/code&gt; 为 &lt;code class="docutils literal"&gt;LOCAL_DOMAIN&lt;/code&gt;、&lt;code class="docutils literal"&gt;WEB_DOMAIN&lt;/code&gt;、&lt;code class="docutils literal"&gt;ALTERNATE_DOMAINS&lt;/code&gt; 的 HTTP 请求。对于其它 Host 一律近回 &lt;code class="docutils literal"&gt;403 Forbidden&lt;/code&gt; 响应。&lt;/p&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="footnote-1" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/mastodon/mastodon/commit/83230234643bb53ba563e42d73fb91a0dcfbff64"&gt;Add guard against DNS rebinding attacks (#16087)&lt;/a&gt;&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;
&lt;/section&gt;
&lt;section id="streaming-api-base-url"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-7" role="doc-backlink"&gt;STREAMING_API_BASE_URL&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;设置 &lt;code class="docutils literal"&gt;STREAMING_API_BASE_URL&lt;/code&gt; 可将 streaming API 部署于不同域名或不同子域名。这可能有助于提高 streaming API 的性能。&lt;/p&gt;
&lt;p&gt;示例值：&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;wss://streaming.example.com&lt;/span&gt;&lt;/code&gt;。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/stream_api_api_v1_instance.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/stream_api_api_v1_instance.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/stream_api_api_v1_instance.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;GET /api/v1/instance&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/stream_api_initial_state.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/stream_api_initial_state.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/stream_api_initial_state.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;initial-state&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/section&gt;
&lt;section id="cdn-host"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-8" role="doc-backlink"&gt;CDN_HOST&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;你可以通过设置 &lt;code class="docutils literal"&gt;CDN_HOST&lt;/code&gt; 将静态文件（logos，emojis，CSS，JS 等等等）托管于独立域名，如CDN（内容分发网络，Content Delivery Network），这将降低用户加载时间。&lt;/p&gt;
&lt;p&gt;示例值：&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;https://assets.example.com&lt;/span&gt;&lt;/code&gt;。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/cdn_host.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/cdn_host.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/cdn_host.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;CDN_HOST&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/section&gt;
&lt;section id="s3-alias-host"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-9" role="doc-backlink"&gt;S3_ALIAS_HOST&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;类似于 &lt;code class="docutils literal"&gt;CDN_HOST&lt;/code&gt;，设置 &lt;code class="docutils literal"&gt;S3_ALIAS_HOST&lt;/code&gt; 可以将用户上传内容托管至一独立域名。&lt;/p&gt;
&lt;p&gt;示例值： &lt;code class="docutils literal"&gt;files.example.com&lt;/code&gt;。&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_search.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_search.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_search.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;Search&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_xhr.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_xhr.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_xhr.thumbnail.png" style="height: 15em;"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;XHR&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_ws.png"&gt;&lt;img alt="/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_ws.thumbnail.png" src="https://blog.bgme.me/images/2022/full-explanation-of-mastodon-domain-name-settings/s3_alias_host_ws.thumbnail.png"&gt;&lt;/a&gt;
&lt;figcaption&gt;
&lt;p&gt;websocket&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/section&gt;
&lt;section id="section-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-10" role="doc-backlink"&gt;域名注意事项&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如前所述，&lt;/p&gt;
&lt;p&gt;Mastodon域名不但是你的用户访问你服务器的方式，更是你的实例和你的用户在联邦宇宙中的身份标识。是后者而不是前者决定了权威域名无法更改。&lt;/p&gt;
&lt;p&gt;如果你使用 masto.host 这类的全托管服务，其可能会为你的实例提供 masto.host 子域。但千万注意，实例的域名一定要自行注册，不要使用全托管服务商为你提供的下属子域。
现在设想这样一个场景，masto.host 宣布下个月要大幅提高托管服务收费，因为太贵了，你不再想使用masto.host托管服务了。&lt;/p&gt;
&lt;p&gt;如果你使用的是自己的域名，那么很简单，只需要导出数据库、导出媒体文件、导出应用密钥，然后使用这些东西转移到另一家托管服务商或自己托管服务器，然后把域名指向新托管商或新服务器就OK了。&lt;/p&gt;
&lt;p&gt;但如果你使用的是 masto.host 的域名，那么你就面临这样一个窘境，你的实例域名是属于masto.host所有，而不是你自己所有，你现在不使用masto.host的服务了，masto.host自然没有义务为你提供域名。由于Mastodon域名一旦确定便不能被更改，如果masto.host不为你提供域名，那你的实例就只能下线。这时如果你实例已经积累了相当用户，又同时希望能继续运行，那你就只有忍受masto.host提价这一个选择，即使价格再贵。&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="section-2"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-11" role="doc-backlink"&gt;实际操作篇&lt;/a&gt;&lt;/h2&gt;
&lt;section id="mastodon-3"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-12" role="doc-backlink"&gt;在不同域名托管 Mastodon 服务&lt;/a&gt;&lt;/h3&gt;
&lt;/section&gt;
&lt;section id="section-3"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-13" role="doc-backlink"&gt;添加反代域名&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;大致步骤：&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;p&gt;组网（同一台机器的情况下可省略）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;修改环境变量，将 Puma 监听地址改为 &lt;code class="docutils literal"&gt;0.0.0.0&lt;/code&gt; （同一台机器的情况下可省略）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;同步 &lt;code class="docutils literal"&gt;/home/mastodon/live/public&lt;/code&gt; （同一台机器的情况下可省略）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;将反代域名添加至 &lt;code class="docutils literal"&gt;ALTERNATE_DOMAINS&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;创建 MITM 代理，修改 websocket 流中的 &lt;code class="docutils literal"&gt;S3_ALIAS_HOST&lt;/code&gt; （可选）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;修改 nginx 配置&lt;/dt&gt;
&lt;dd&gt;&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;未设置 &lt;code class="docutils literal"&gt;STREAMING_API_BASE_URL&lt;/code&gt; 、&lt;code class="docutils literal"&gt;CDN_HOST&lt;/code&gt; 、&lt;code class="docutils literal"&gt;S3_ALIAS_HOST&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;ol class="loweralpha simple"&gt;
&lt;li&gt;&lt;p&gt;将反代域名添加至 &lt;code class="docutils literal"&gt;server_name&lt;/code&gt; 中&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;重新生成证书&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;需修改 &lt;code class="docutils literal"&gt;STREAMING_API_BASE_URL&lt;/code&gt; 、&lt;code class="docutils literal"&gt;CDN_HOST&lt;/code&gt; 、&lt;code class="docutils literal"&gt;S3_ALIAS_HOST&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;ol class="loweralpha simple"&gt;
&lt;li&gt;&lt;p&gt;复制创建新一份配置文件&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;修改 &lt;code class="docutils literal"&gt;proxy_cache_path&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;添加 &lt;code class="docutils literal"&gt;proxy_set_header &lt;span class="pre"&gt;Accept-Encoding&lt;/span&gt; identity;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;替换 &lt;code class="docutils literal"&gt;STREAMING_API_BASE_URL&lt;/code&gt; （可选）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;替换 &lt;code class="docutils literal"&gt;CDN_HOST&lt;/code&gt; （可选）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;替换 &lt;code class="docutils literal"&gt;S3_ALIAS_HOST&lt;/code&gt; （可选）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;重新生成证书&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;修改 nginx 配置的 &lt;code class="docutils literal"&gt;/api/v1/streaming&lt;/code&gt; 部分（可选）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;重载 nginx 配置&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt;&lt;pre class="code nginx"&gt;&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-1" name="rest_code_c78c0419bd344169a8f30c90118a90e8-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;# 同一机器需删去该部分&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-2" name="rest_code_c78c0419bd344169a8f30c90118a90e8-2" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-2"&gt;&lt;/a&gt;&lt;span class="k"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-3" name="rest_code_c78c0419bd344169a8f30c90118a90e8-3" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-4" name="rest_code_c78c0419bd344169a8f30c90118a90e8-4" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;''&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="s"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-5" name="rest_code_c78c0419bd344169a8f30c90118a90e8-5" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-5"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-6" name="rest_code_c78c0419bd344169a8f30c90118a90e8-6" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-6"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-7" name="rest_code_c78c0419bd344169a8f30c90118a90e8-7" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-7"&gt;&lt;/a&gt;&lt;span class="c1"&gt;# 同一机器需修改名称&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-8" name="rest_code_c78c0419bd344169a8f30c90118a90e8-8" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-8"&gt;&lt;/a&gt;&lt;span class="k"&gt;upstream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;backend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-9" name="rest_code_c78c0419bd344169a8f30c90118a90e8-9" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;127.0.0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;fail_timeout=0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-10" name="rest_code_c78c0419bd344169a8f30c90118a90e8-10" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-10"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-11" name="rest_code_c78c0419bd344169a8f30c90118a90e8-11" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-11"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-12" name="rest_code_c78c0419bd344169a8f30c90118a90e8-12" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-12"&gt;&lt;/a&gt;&lt;span class="c1"&gt;# 同一机器需修改名称，根据需求将 stream API 上游地址修改为 MITM  代理&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-13" name="rest_code_c78c0419bd344169a8f30c90118a90e8-13" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-13"&gt;&lt;/a&gt;&lt;span class="k"&gt;upstream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;streaming&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-14" name="rest_code_c78c0419bd344169a8f30c90118a90e8-14" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;127.0.0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;fail_timeout=0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-15" name="rest_code_c78c0419bd344169a8f30c90118a90e8-15" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-15"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-16" name="rest_code_c78c0419bd344169a8f30c90118a90e8-16" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-16"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-17" name="rest_code_c78c0419bd344169a8f30c90118a90e8-17" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-17"&gt;&lt;/a&gt;&lt;span class="c1"&gt;# 同一机器需删去该部分&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-18" name="rest_code_c78c0419bd344169a8f30c90118a90e8-18" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-18"&gt;&lt;/a&gt;&lt;span class="k"&gt;proxy_cache_path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/var/cache/nginx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;levels=1:2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;keys_zone=CACHE:10m&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;inactive=7d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max_size=1g&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-19" name="rest_code_c78c0419bd344169a8f30c90118a90e8-19" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-19"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-20" name="rest_code_c78c0419bd344169a8f30c90118a90e8-20" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-20"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-21" name="rest_code_c78c0419bd344169a8f30c90118a90e8-21" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-21"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-22" name="rest_code_c78c0419bd344169a8f30c90118a90e8-22" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-22"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;[::]:80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-23" name="rest_code_c78c0419bd344169a8f30c90118a90e8-23" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-23"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# 修改或添加 server_name&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-24" name="rest_code_c78c0419bd344169a8f30c90118a90e8-24" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-24"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-25" name="rest_code_c78c0419bd344169a8f30c90118a90e8-25" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-25"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# 根据需求修改 root，同一机器保持原状即可&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-26" name="rest_code_c78c0419bd344169a8f30c90118a90e8-26" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-26"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/home/mastodon/live/public&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-27" name="rest_code_c78c0419bd344169a8f30c90118a90e8-27" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-27"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/.well-known/acme-challenge/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;allow&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;all&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-28" name="rest_code_c78c0419bd344169a8f30c90118a90e8-28" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-28"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="nv"&gt;$host$request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-29" name="rest_code_c78c0419bd344169a8f30c90118a90e8-29" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-29"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-30" name="rest_code_c78c0419bd344169a8f30c90118a90e8-30" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-30"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-31" name="rest_code_c78c0419bd344169a8f30c90118a90e8-31" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-31"&gt;&lt;/a&gt;&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-32" name="rest_code_c78c0419bd344169a8f30c90118a90e8-32" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-32"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;ssl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-33" name="rest_code_c78c0419bd344169a8f30c90118a90e8-33" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-33"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;[::]:443&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;ssl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-34" name="rest_code_c78c0419bd344169a8f30c90118a90e8-34" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-34"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# 修改或添加 server_name&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-35" name="rest_code_c78c0419bd344169a8f30c90118a90e8-35" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-35"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-36" name="rest_code_c78c0419bd344169a8f30c90118a90e8-36" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-36"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-37" name="rest_code_c78c0419bd344169a8f30c90118a90e8-37" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-37"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_protocols&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;TLSv1.2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;TLSv1.3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-38" name="rest_code_c78c0419bd344169a8f30c90118a90e8-38" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-38"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_ciphers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-39" name="rest_code_c78c0419bd344169a8f30c90118a90e8-39" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-39"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_prefer_server_ciphers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-40" name="rest_code_c78c0419bd344169a8f30c90118a90e8-40" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-40"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_session_cache&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;shared:SSL:10m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-41" name="rest_code_c78c0419bd344169a8f30c90118a90e8-41" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-41"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;ssl_session_tickets&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-42" name="rest_code_c78c0419bd344169a8f30c90118a90e8-42" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-42"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-43" name="rest_code_c78c0419bd344169a8f30c90118a90e8-43" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-43"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Uncomment these lines once you acquire a certificate:&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-44" name="rest_code_c78c0419bd344169a8f30c90118a90e8-44" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-44"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-45" name="rest_code_c78c0419bd344169a8f30c90118a90e8-45" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-45"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-46" name="rest_code_c78c0419bd344169a8f30c90118a90e8-46" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-46"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-47" name="rest_code_c78c0419bd344169a8f30c90118a90e8-47" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-47"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;keepalive_timeout&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-48" name="rest_code_c78c0419bd344169a8f30c90118a90e8-48" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-48"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;sendfile&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-49" name="rest_code_c78c0419bd344169a8f30c90118a90e8-49" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-49"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;client_max_body_size&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-50" name="rest_code_c78c0419bd344169a8f30c90118a90e8-50" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-50"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-51" name="rest_code_c78c0419bd344169a8f30c90118a90e8-51" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-51"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# 根据需求修改 root，同一机器保持原状即可&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-52" name="rest_code_c78c0419bd344169a8f30c90118a90e8-52" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-52"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/home/mastodon/live/public&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-53" name="rest_code_c78c0419bd344169a8f30c90118a90e8-53" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-53"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-54" name="rest_code_c78c0419bd344169a8f30c90118a90e8-54" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-54"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-55" name="rest_code_c78c0419bd344169a8f30c90118a90e8-55" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-55"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip_disable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"msie6"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-56" name="rest_code_c78c0419bd344169a8f30c90118a90e8-56" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-56"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip_vary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-57" name="rest_code_c78c0419bd344169a8f30c90118a90e8-57" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-57"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip_proxied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-58" name="rest_code_c78c0419bd344169a8f30c90118a90e8-58" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-58"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip_comp_level&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-59" name="rest_code_c78c0419bd344169a8f30c90118a90e8-59" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-59"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip_buffers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8k&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-60" name="rest_code_c78c0419bd344169a8f30c90118a90e8-60" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-60"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-61" name="rest_code_c78c0419bd344169a8f30c90118a90e8-61" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-61"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;gzip_types&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/plain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/css&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/javascript&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/xml&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/xml&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/xml+rss&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;text/javascript&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;image/svg+xml&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;image/x-icon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-62" name="rest_code_c78c0419bd344169a8f30c90118a90e8-62" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-62"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-63" name="rest_code_c78c0419bd344169a8f30c90118a90e8-63" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-63"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-64" name="rest_code_c78c0419bd344169a8f30c90118a90e8-64" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-64"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-65" name="rest_code_c78c0419bd344169a8f30c90118a90e8-65" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-65"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-66" name="rest_code_c78c0419bd344169a8f30c90118a90e8-66" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-66"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-67" name="rest_code_c78c0419bd344169a8f30c90118a90e8-67" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-67"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# If Docker is used for deployment and Rails serves static files,&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-68" name="rest_code_c78c0419bd344169a8f30c90118a90e8-68" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-68"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# then needed must replace line `try_files $uri =404;` with `try_files $uri @proxy;`.&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-69" name="rest_code_c78c0419bd344169a8f30c90118a90e8-69" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-69"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/sw.js&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-70" name="rest_code_c78c0419bd344169a8f30c90118a90e8-70" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-70"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=604800,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-71" name="rest_code_c78c0419bd344169a8f30c90118a90e8-71" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-71"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-72" name="rest_code_c78c0419bd344169a8f30c90118a90e8-72" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-72"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-73" name="rest_code_c78c0419bd344169a8f30c90118a90e8-73" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-73"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-74" name="rest_code_c78c0419bd344169a8f30c90118a90e8-74" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-74"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-75" name="rest_code_c78c0419bd344169a8f30c90118a90e8-75" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-75"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/assets/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-76" name="rest_code_c78c0419bd344169a8f30c90118a90e8-76" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-76"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-77" name="rest_code_c78c0419bd344169a8f30c90118a90e8-77" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-77"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-78" name="rest_code_c78c0419bd344169a8f30c90118a90e8-78" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-78"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-79" name="rest_code_c78c0419bd344169a8f30c90118a90e8-79" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-79"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-80" name="rest_code_c78c0419bd344169a8f30c90118a90e8-80" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-80"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-81" name="rest_code_c78c0419bd344169a8f30c90118a90e8-81" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-81"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/avatars/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-82" name="rest_code_c78c0419bd344169a8f30c90118a90e8-82" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-82"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-83" name="rest_code_c78c0419bd344169a8f30c90118a90e8-83" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-83"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-84" name="rest_code_c78c0419bd344169a8f30c90118a90e8-84" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-84"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-85" name="rest_code_c78c0419bd344169a8f30c90118a90e8-85" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-85"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-86" name="rest_code_c78c0419bd344169a8f30c90118a90e8-86" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-86"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-87" name="rest_code_c78c0419bd344169a8f30c90118a90e8-87" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-87"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/emoji/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-88" name="rest_code_c78c0419bd344169a8f30c90118a90e8-88" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-88"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-89" name="rest_code_c78c0419bd344169a8f30c90118a90e8-89" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-89"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-90" name="rest_code_c78c0419bd344169a8f30c90118a90e8-90" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-90"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-91" name="rest_code_c78c0419bd344169a8f30c90118a90e8-91" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-91"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-92" name="rest_code_c78c0419bd344169a8f30c90118a90e8-92" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-92"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-93" name="rest_code_c78c0419bd344169a8f30c90118a90e8-93" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-93"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/headers/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-94" name="rest_code_c78c0419bd344169a8f30c90118a90e8-94" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-94"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-95" name="rest_code_c78c0419bd344169a8f30c90118a90e8-95" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-95"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-96" name="rest_code_c78c0419bd344169a8f30c90118a90e8-96" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-96"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-97" name="rest_code_c78c0419bd344169a8f30c90118a90e8-97" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-97"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-98" name="rest_code_c78c0419bd344169a8f30c90118a90e8-98" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-98"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-99" name="rest_code_c78c0419bd344169a8f30c90118a90e8-99" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-99"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/packs/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-100" name="rest_code_c78c0419bd344169a8f30c90118a90e8-100" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-100"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-101" name="rest_code_c78c0419bd344169a8f30c90118a90e8-101" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-101"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-102" name="rest_code_c78c0419bd344169a8f30c90118a90e8-102" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-102"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-103" name="rest_code_c78c0419bd344169a8f30c90118a90e8-103" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-103"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-104" name="rest_code_c78c0419bd344169a8f30c90118a90e8-104" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-104"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-105" name="rest_code_c78c0419bd344169a8f30c90118a90e8-105" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-105"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/shortcuts/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-106" name="rest_code_c78c0419bd344169a8f30c90118a90e8-106" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-106"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-107" name="rest_code_c78c0419bd344169a8f30c90118a90e8-107" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-107"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-108" name="rest_code_c78c0419bd344169a8f30c90118a90e8-108" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-108"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-109" name="rest_code_c78c0419bd344169a8f30c90118a90e8-109" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-109"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-110" name="rest_code_c78c0419bd344169a8f30c90118a90e8-110" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-110"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-111" name="rest_code_c78c0419bd344169a8f30c90118a90e8-111" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-111"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/sounds/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-112" name="rest_code_c78c0419bd344169a8f30c90118a90e8-112" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-112"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;must-revalidate"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-113" name="rest_code_c78c0419bd344169a8f30c90118a90e8-113" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-113"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-114" name="rest_code_c78c0419bd344169a8f30c90118a90e8-114" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-114"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-115" name="rest_code_c78c0419bd344169a8f30c90118a90e8-115" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-115"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-116" name="rest_code_c78c0419bd344169a8f30c90118a90e8-116" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-116"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-117" name="rest_code_c78c0419bd344169a8f30c90118a90e8-117" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-117"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;^/system/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-118" name="rest_code_c78c0419bd344169a8f30c90118a90e8-118" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-118"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Cache-Control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"public,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;max-age=2419200,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;immutable"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-119" name="rest_code_c78c0419bd344169a8f30c90118a90e8-119" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-119"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-120" name="rest_code_c78c0419bd344169a8f30c90118a90e8-120" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-120"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;try_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-121" name="rest_code_c78c0419bd344169a8f30c90118a90e8-121" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-121"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-122" name="rest_code_c78c0419bd344169a8f30c90118a90e8-122" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-122"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-123" name="rest_code_c78c0419bd344169a8f30c90118a90e8-123" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-123"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;^~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/api/v1/streaming&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-124" name="rest_code_c78c0419bd344169a8f30c90118a90e8-124" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-124"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-125" name="rest_code_c78c0419bd344169a8f30c90118a90e8-125" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-125"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-126" name="rest_code_c78c0419bd344169a8f30c90118a90e8-126" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-126"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-127" name="rest_code_c78c0419bd344169a8f30c90118a90e8-127" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-127"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-128" name="rest_code_c78c0419bd344169a8f30c90118a90e8-128" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-128"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-129" name="rest_code_c78c0419bd344169a8f30c90118a90e8-129" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-129"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-130" name="rest_code_c78c0419bd344169a8f30c90118a90e8-130" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-130"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://streaming&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-131" name="rest_code_c78c0419bd344169a8f30c90118a90e8-131" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-131"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-132" name="rest_code_c78c0419bd344169a8f30c90118a90e8-132" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-132"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_redirect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-133" name="rest_code_c78c0419bd344169a8f30c90118a90e8-133" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-133"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-134" name="rest_code_c78c0419bd344169a8f30c90118a90e8-134" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-134"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-135" name="rest_code_c78c0419bd344169a8f30c90118a90e8-135" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-135"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-136" name="rest_code_c78c0419bd344169a8f30c90118a90e8-136" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-136"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-137" name="rest_code_c78c0419bd344169a8f30c90118a90e8-137" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-137"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Strict-Transport-Security&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"max-age=63072000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;includeSubDomains"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-138" name="rest_code_c78c0419bd344169a8f30c90118a90e8-138" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-138"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-139" name="rest_code_c78c0419bd344169a8f30c90118a90e8-139" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-139"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;tcp_nodelay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-140" name="rest_code_c78c0419bd344169a8f30c90118a90e8-140" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-140"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-141" name="rest_code_c78c0419bd344169a8f30c90118a90e8-141" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-141"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-142" name="rest_code_c78c0419bd344169a8f30c90118a90e8-142" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-142"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;@proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-143" name="rest_code_c78c0419bd344169a8f30c90118a90e8-143" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-143"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-144" name="rest_code_c78c0419bd344169a8f30c90118a90e8-144" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-144"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-145" name="rest_code_c78c0419bd344169a8f30c90118a90e8-145" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-145"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-146" name="rest_code_c78c0419bd344169a8f30c90118a90e8-146" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-146"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-147" name="rest_code_c78c0419bd344169a8f30c90118a90e8-147" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-147"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Proxy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-148" name="rest_code_c78c0419bd344169a8f30c90118a90e8-148" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-148"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Server&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-149" name="rest_code_c78c0419bd344169a8f30c90118a90e8-149" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-149"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-150" name="rest_code_c78c0419bd344169a8f30c90118a90e8-150" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-150"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://backend&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-151" name="rest_code_c78c0419bd344169a8f30c90118a90e8-151" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-151"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_buffering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-152" name="rest_code_c78c0419bd344169a8f30c90118a90e8-152" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-152"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_redirect&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-153" name="rest_code_c78c0419bd344169a8f30c90118a90e8-153" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-153"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-154" name="rest_code_c78c0419bd344169a8f30c90118a90e8-154" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-154"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-155" name="rest_code_c78c0419bd344169a8f30c90118a90e8-155" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-155"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-156" name="rest_code_c78c0419bd344169a8f30c90118a90e8-156" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-156"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-157" name="rest_code_c78c0419bd344169a8f30c90118a90e8-157" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-157"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-158" name="rest_code_c78c0419bd344169a8f30c90118a90e8-158" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-158"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;#### 新增部分开始 ###&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-159" name="rest_code_c78c0419bd344169a8f30c90118a90e8-159" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-159"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-160" name="rest_code_c78c0419bd344169a8f30c90118a90e8-160" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-160"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# 向上游请求明文，nginx 无法替换压缩内容&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-161" name="rest_code_c78c0419bd344169a8f30c90118a90e8-161" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-161"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Accept-Encoding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;identity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-162" name="rest_code_c78c0419bd344169a8f30c90118a90e8-162" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-162"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-163" name="rest_code_c78c0419bd344169a8f30c90118a90e8-163" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-163"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# 字符串只进行一次替换，即只替换第一个被匹配的字符串。这里关闭。&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-164" name="rest_code_c78c0419bd344169a8f30c90118a90e8-164" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-164"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter_once&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-165" name="rest_code_c78c0419bd344169a8f30c90118a90e8-165" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-165"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;#替换的请求类型，增加 application/json 。&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-166" name="rest_code_c78c0419bd344169a8f30c90118a90e8-166" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-166"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter_types&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-167" name="rest_code_c78c0419bd344169a8f30c90118a90e8-167" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-167"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-168" name="rest_code_c78c0419bd344169a8f30c90118a90e8-168" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-168"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# 替换 STREAMING_API_BASE_URL （按需）&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-169" name="rest_code_c78c0419bd344169a8f30c90118a90e8-169" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-169"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;wss://example.com&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;wss://example.org&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-170" name="rest_code_c78c0419bd344169a8f30c90118a90e8-170" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-170"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# 替换 CDN_HOST （按需）&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-171" name="rest_code_c78c0419bd344169a8f30c90118a90e8-171" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-171"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://cdn.example.com&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://cdn.example.org&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-172" name="rest_code_c78c0419bd344169a8f30c90118a90e8-172" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-172"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# 替换 S3_ALIAS_HOST （按需）&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-173" name="rest_code_c78c0419bd344169a8f30c90118a90e8-173" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-173"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://img.example.com&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://img.example.org&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-174" name="rest_code_c78c0419bd344169a8f30c90118a90e8-174" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-174"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# 替捣 missing.png （按需）&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-175" name="rest_code_c78c0419bd344169a8f30c90118a90e8-175" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-175"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://example.com/avatars/original/missing.png&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://example.org/avatars/original/missing.png&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-176" name="rest_code_c78c0419bd344169a8f30c90118a90e8-176" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-176"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;sub_filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://example.com/headers/original/missing.png&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;https://example.org/headers/original/missing.png&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-177" name="rest_code_c78c0419bd344169a8f30c90118a90e8-177" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-177"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-178" name="rest_code_c78c0419bd344169a8f30c90118a90e8-178" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-178"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;### 新增部分结束 ###&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-179" name="rest_code_c78c0419bd344169a8f30c90118a90e8-179" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-179"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-180" name="rest_code_c78c0419bd344169a8f30c90118a90e8-180" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-180"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;CACHE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-181" name="rest_code_c78c0419bd344169a8f30c90118a90e8-181" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-181"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;7d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-182" name="rest_code_c78c0419bd344169a8f30c90118a90e8-182" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-182"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_valid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;410&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;24h&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-183" name="rest_code_c78c0419bd344169a8f30c90118a90e8-183" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-183"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;proxy_cache_use_stale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;timeout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_503&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http_504&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-184" name="rest_code_c78c0419bd344169a8f30c90118a90e8-184" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-184"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;add_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;X-Cached&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$upstream_cache_status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-185" name="rest_code_c78c0419bd344169a8f30c90118a90e8-185" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-185"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-186" name="rest_code_c78c0419bd344169a8f30c90118a90e8-186" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-186"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kn"&gt;tcp_nodelay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-187" name="rest_code_c78c0419bd344169a8f30c90118a90e8-187" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-187"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-188" name="rest_code_c78c0419bd344169a8f30c90118a90e8-188" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-188"&gt;&lt;/a&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-189" name="rest_code_c78c0419bd344169a8f30c90118a90e8-189" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-189"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kn"&gt;error_page&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;501&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;503&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;504&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/500.html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_c78c0419bd344169a8f30c90118a90e8-190" name="rest_code_c78c0419bd344169a8f30c90118a90e8-190" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c78c0419bd344169a8f30c90118a90e8-190"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;websocket MITM 代理&lt;/p&gt;
&lt;p&gt;安装 &lt;a class="reference external" href="https://mitmproxy.org/"&gt;mitmproxy&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code python3"&gt;&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-1" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-1"&gt;&lt;/a&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-2" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-2" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-2"&gt;&lt;/a&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;mitmproxy&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ctx&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-3" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-3" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-3"&gt;&lt;/a&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-4" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-4" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-4"&gt;&lt;/a&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-5" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-5" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-5"&gt;&lt;/a&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;websocket_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;flow&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-6" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-6" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-6"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;# get the latest message&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-7" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-7" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-7"&gt;&lt;/a&gt;    &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;flow&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-8" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-8" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-9" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-9" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-9"&gt;&lt;/a&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-10" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-10" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-10"&gt;&lt;/a&gt;        &lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Client sent a message: &lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-11" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-11" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-11"&gt;&lt;/a&gt;    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-12" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-12" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-12"&gt;&lt;/a&gt;        &lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Server sent a message: &lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-13" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-13" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-14" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-14" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-14"&gt;&lt;/a&gt;    &lt;span class="c1"&gt;# manipulate the message content&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-15" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-15" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-15"&gt;&lt;/a&gt;    &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://img\.example\.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"https://img.example.org"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-16" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-16" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-16"&gt;&lt;/a&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-17" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-17" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-17"&gt;&lt;/a&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s1"&gt;'FOOBAR'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-18" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-18" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-18"&gt;&lt;/a&gt;        &lt;span class="c1"&gt;# kill the message and not send it to the other endpoint&lt;/span&gt;
&lt;a id="rest_code_c79eed607b744b8d9e69bcb38673e8e5-19" name="rest_code_c79eed607b744b8d9e69bcb38673e8e5-19" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_c79eed607b744b8d9e69bcb38673e8e5-19"&gt;&lt;/a&gt;        &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;kill&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code text"&gt;&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-1" name="rest_code_d4503550503c4e5788551e1d76ecb69f-1" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-1"&gt;&lt;/a&gt;# /etc/systemd/system/mitm-mastodon-websocket.service
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-2" name="rest_code_d4503550503c4e5788551e1d76ecb69f-2" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-2"&gt;&lt;/a&gt;[Unit]
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-3" name="rest_code_d4503550503c4e5788551e1d76ecb69f-3" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-3"&gt;&lt;/a&gt;Description=Mastodon Mitm push websocket
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-4" name="rest_code_d4503550503c4e5788551e1d76ecb69f-4" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-4"&gt;&lt;/a&gt;After=network.target
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-5" name="rest_code_d4503550503c4e5788551e1d76ecb69f-5" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-5"&gt;&lt;/a&gt;Wants=network.target
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-6" name="rest_code_d4503550503c4e5788551e1d76ecb69f-6" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-6"&gt;&lt;/a&gt;
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-7" name="rest_code_d4503550503c4e5788551e1d76ecb69f-7" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-7"&gt;&lt;/a&gt;[Service]
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-8" name="rest_code_d4503550503c4e5788551e1d76ecb69f-8" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-8"&gt;&lt;/a&gt;Type=simple
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-9" name="rest_code_d4503550503c4e5788551e1d76ecb69f-9" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-9"&gt;&lt;/a&gt;User=www-data
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-10" name="rest_code_d4503550503c4e5788551e1d76ecb69f-10" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-10"&gt;&lt;/a&gt;Slice=system-mitm.slice
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-11" name="rest_code_d4503550503c4e5788551e1d76ecb69f-11" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-11"&gt;&lt;/a&gt;ExecStart=/usr/bin/mitmdump --listen-host 127.0.0.1 -p 4444 -s /opt/mastodon_websocket_messages.py --mode reverse:http://127.0.0.1:4000 --set keep_host_header --quiet
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-12" name="rest_code_d4503550503c4e5788551e1d76ecb69f-12" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-12"&gt;&lt;/a&gt;Restart=on-failure
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-13" name="rest_code_d4503550503c4e5788551e1d76ecb69f-13" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-13"&gt;&lt;/a&gt;
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-14" name="rest_code_d4503550503c4e5788551e1d76ecb69f-14" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-14"&gt;&lt;/a&gt;[Install]
&lt;a id="rest_code_d4503550503c4e5788551e1d76ecb69f-15" name="rest_code_d4503550503c4e5788551e1d76ecb69f-15" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#rest_code_d4503550503c4e5788551e1d76ecb69f-15"&gt;&lt;/a&gt;WantedBy=multi-user.target
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="section-4"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/#toc-entry-14" role="doc-backlink"&gt;参考资料&lt;/a&gt;&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://docs.joinmastodon.org/admin/config/"&gt;Configuring your environment&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/mastodon/documentation/blob/archive/Running-Mastodon/Serving_a_different_domain.md"&gt;Using a different domain name for Mastodon and the users it serves&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://docs.joinmastodon.org/spec/webfinger/"&gt;WebFinger&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>Mastodon</category><guid>https://blog.bgme.me/posts/2022/full-explanation-of-mastodon-domain-name-settings/</guid><pubDate>Mon, 05 Dec 2022 14:31:19 GMT</pubDate></item><item><title>谈谈长毛象那些奇怪的设计——写给长毛象新用户</title><link>https://blog.bgme.me/posts/2022/talk-about-those-weird-designs-of-mastodon-for-new-mastodon-users/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;本文最开始发布于本人的Mastodon帐户（&lt;a class="reference external" href="https://bgme.bid/@bgme/104648719495835995"&gt;链接&lt;/a&gt;），最初的发布时间是2020年8月7日。&lt;/p&gt;
&lt;p&gt;时间已经过去两年多了，本文中的内容也有一些不太适用的地方，但总体上仍然适用。&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;没有转评功能：&lt;/p&gt;
&lt;p&gt;长毛象没有转评功能常常让新用户感觉很奇怪，但这并不是Mastodon作者懒没有做，而是有意设计的。&lt;a class="footnote-reference brackets" href="https://blog.bgme.me/posts/2022/talk-about-those-weird-designs-of-mastodon-for-new-mastodon-users/#footnote-1" id="footnote-reference-1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;长毛象没有转评功能是为了防止关注者多的用户对关注者少的用户的欺凌。&lt;/p&gt;
&lt;p&gt;在长毛象，用户A与用户B的以回复形式进行的交谈对话，只有你同时关注了对话双方（用户A与用户B），她们的对话才会出现在你的主页时间轴上。如果你只关注了其中一人，那么她们之间的交谈将不会出现在你的时间轴中。&lt;/p&gt;
&lt;p&gt;这样的设计，有效防止了无关人员插入进交谈对话之中，确保不会出现这样的场景： 关注者人数较多的用户回复了某人一句不太好的话，然后她那数量庞大的关注者便在自己的时间轴中看到这个对话，然后一拥而上，将对话的另一方骂地狗血淋头。 而转评则会打破这种对话双方的平等，造成关注者较多的用户对另一方用户的示众，进而引发网络欺凌。&lt;/p&gt;
&lt;p&gt;所以长毛象不添加转评功能。虽然，这样并不能阻止，你通过截图、发链接等方式对他人的示众。 但操作复杂性的增加，会相应减少这样行为的发生。&lt;/p&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;搜索功能极弱：&lt;/p&gt;
&lt;p&gt;长毛象另一个让新用户感到不适的地方是搜索功能太弱，在搜索栏中什么都搜不出来。这也是Mastodon有意设计的。&lt;/p&gt;
&lt;p&gt;在长毛象，即使你所在的实例开启全文搜索功能，你也只能在自己发出的嘟文以及自己互动过的（转发、打星、收藏）嘟文中使用相关关键词查找。&lt;/p&gt;
&lt;p&gt;这样的设计同样也是为了防止欺凌与骚扰。&lt;/p&gt;
&lt;p&gt;不知你是否在使用新浪微博的过程中经历过这样的事情，在自己没几个人关注的帐号里自言自语评论了一下某明星或大V，然后莫名其妙的就有一些人跑到你的自言自语下面评论甚至辱骂。这些人过来的呢？其中一个重要的途径就是搜索。搜索一些关键词，然后顺着搜索结果挨个评论轰炸。&lt;/p&gt;
&lt;p&gt;长毛象将搜索功能限制为只能在自己发出的嘟文以及自己互动过的嘟文中进行搜索，彻底杜绝了通过搜索某些关键词，不请自来的对用户进行骚扰或欺凌的可能。&lt;/p&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;纯时间排序时间轴/没有热点（热点功能极弱）：&lt;/p&gt;
&lt;p&gt;在我看来，纯时间排序时间轴不能被称之为奇怪的设计。但使用过太多智能排序时间轴的产品的用户，可能会对这样的纯时间排序时间轴感到一些奇怪。&lt;/p&gt;
&lt;p&gt;推特这些使用智能算法排序时间轴，有一个通用的借口便是：为了用户体验，为了让用户不错过热点信息。&lt;/p&gt;
&lt;p&gt;但仔细想一想便会发现这个理由站不住脚，如果真的是大家都讨论的话题，那用户自然会通过她关注的用户在时间线上看到，越热的话题自然越多人看到，单独搞出一个“热度”功能又有什么必要？同样道理，同样的道理，好友转发次数越到，在时间线上看到的机率越大，对于用户来说智能时间轴又有什么必要？&lt;/p&gt;
&lt;p&gt;热点与智能时间轴只不过是为了让用户看到某些内容有一个合理的借口，为广告与信息操纵打开方便之门。&lt;/p&gt;
&lt;p&gt;而且错过一些信息，信息的自然衰减本来就是信息传播的正常环节。没有热点，纯时间排序的时间轴，为每个用户提供近乎平等的展示机会。&lt;/p&gt;
&lt;p&gt;如果你不想错过某些信息，想要特别关注某人，请善用列表（List）功能 &lt;a class="footnote-reference brackets" href="https://blog.bgme.me/posts/2022/talk-about-those-weird-designs-of-mastodon-for-new-mastodon-users/#footnote-2" id="footnote-reference-2" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;2&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt; 。&lt;/p&gt;
&lt;aside class="admonition note"&gt;
&lt;p class="admonition-title"&gt;注解&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2022年补充说明&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mastodon v3.5.0 版之后便加强了热点功能。&lt;/p&gt;
&lt;p&gt;Mastodon v3.5.0 版新添加的 Explore 功能，具体而言，v3.5.0 添加了 Trending posts  和 Trending links ，当某条嘟文或链接在转发、收藏达到一定次数，并经过管理员通过后，便会出现在 Explore 栏。
同时 v3.5.0 也改变了 Trending hastags 的计算方法，不再将转嘟计算在内。&lt;/p&gt;
&lt;p&gt;相较以前只有三个 hastags 的 Trending 栏，Mastodon v3.5.0 实际上是加强了热度这个概念。&lt;/p&gt;
&lt;p&gt;我个人的看法是：增强热度功能也许并不是一件坏事。&lt;/p&gt;
&lt;p&gt;随着网络的扩大，人数的增加，Mastodon 对于新人的友好度也在下降，具体而言，相较几年前，随着人数的增加，新人在网络中所占有的份额也在下降，从实际体验上而言便是新人越来越难以受到关注，其发言仅仅依靠单纯的时间轴传播的难度也在增加，而 Trending posts 则是对其的一大补充。&lt;/p&gt;
&lt;p&gt;当然，这里面也存在 trending posts 上榜之后自反馈加强的问题，但 trending posts 较短的半衰期（2个小时）从某种程度上遏制了这个问题。&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="footnote-1" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://blog.bgme.me/posts/2022/talk-about-those-weird-designs-of-mastodon-for-new-mastodon-users/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;a class="reference external" href="https://blog.joinmastodon.org/2018/07/cage-the-mastodon/"&gt;https://blog.joinmastodon.org/2018/07/cage-the-mastodon/&lt;/a&gt;&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote brackets" id="footnote-2" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://blog.bgme.me/posts/2022/talk-about-those-weird-designs-of-mastodon-for-new-mastodon-users/#footnote-reference-2"&gt;2&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;a class="reference external" href="https://bgme.me/@bgme/104589359118881012"&gt;https://bgme.me/@bgme/104589359118881012&lt;/a&gt;&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;</description><category>Mastodon</category><category>毛象搬运</category><guid>https://blog.bgme.me/posts/2022/talk-about-those-weird-designs-of-mastodon-for-new-mastodon-users/</guid><pubDate>Thu, 24 Nov 2022 02:52:07 GMT</pubDate></item><item><title>容忍的底线</title><link>https://blog.bgme.me/posts/2022/the-bottom-line-of-tolerance/</link><dc:creator>无影人</dc:creator><description>&lt;p&gt;在与众多嘟友有关Apple公司的讨论中，我突然想到，我们心中应当有一条容忍的底线，当有人越过了这条底线，我们便应该抵制与坚绝的拒绝它。无条件的妥协与退让，只会带来得寸进尺，以及最终退无可退而致灭亡的结局。&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;如果你同意上面的内容，那让我们继续。&lt;/p&gt;
&lt;p&gt;我认为这条底线是：不伤害，即对方不能主动恶意侵害我们。&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;如今各个互联网公司主动侵害用户的利益，似乎已经成为一种惯例，大概是数据的虚拟性麻痹了使用者的大脑，抑或是久在鱼肆不闻其臭，很多被侵害的用户都习以为常了，甚至为侵害者辩护起来。&lt;/p&gt;
&lt;p&gt;如果你认为各个互联网公司干的事情没有什么不对的，那让我们简单替换一下主语。&lt;/p&gt;
&lt;p&gt;不想打扫房间，所以请了一个保洁员，这个保洁员不但干活麻利，还要价便宜。但有一天，你发现这个保洁员偷偷地把你房间中你的物品偷去卖钱；如果你说偷东西卖钱涉及实物性质不一样，那就换一个，你发现这个保洁员在你的房间中装了很多针孔摄像头，卫生间、卧室都装的有。对于这样的一个保洁员，即使他要价再低，干活干的再好，相信你都会毫不犹豫的辞退他。&lt;/p&gt;
&lt;p&gt;那为什么同样性质的行为，替换一个主语，就要采取不一样的行为呢？&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;就苹果公司而言，当它主动向用户推送恶意更新，降低旧机型CPU频率，劣化用户体验时。&lt;/p&gt;
&lt;p&gt;这家公司便已经跨过那条不可容忍的底线了！&lt;/p&gt;
&lt;hr class="docutils"&gt;
&lt;p&gt;原嘟文地址：&lt;a class="reference external" href="https://bgme.bid/@bgme/105226302089936130"&gt;https://bgme.bid/@bgme/105226302089936130&lt;/a&gt;&lt;/p&gt;</description><category>Apple</category><category>毛象搬运</category><guid>https://blog.bgme.me/posts/2022/the-bottom-line-of-tolerance/</guid><pubDate>Thu, 24 Nov 2022 02:48:02 GMT</pubDate></item></channel></rss>