id: df271032e8224cf9b955413bbcbd4d4b
parent_id: 
item_type: 1
item_id: 2839ef2a36294274b06b80ca90f85b4a
item_updated_time: 1764345475129
title_diff: "[{\"diffs\":[[1,\"openwrt 上通过 pdnsd 和 dnsmasq 解决 dns 污染 - { wid\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":45}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>openwrt 上通过 pdnsd 和 dnsmasq 解决 dns 污染 - { wido.me }</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"7089\\\"></a>\\\r\\\n<h1>openwrt 上通过 pdnsd 和 dnsmasq 解决 dns 污染 - { wido.me }</h1>\\\r\\\n\\\r\\\n<div><span>\\\n  <div>\\\n<div><br/></div><div style=\\\"font-size: 16px; display:block; min-width: 100%;\\\"> <div style=\\\"background-color:transparent;font:inherit;vertical-align:baseline;\\\"><div style=\\\"background-color:transparent;font:inherit;vertical-align:baseline;font-family:&quot;PT Serif&quot;;font-size:16px;line-height:1.5em;color:rgb(31, 9, 9);text-align:left;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;z-index:200;padding-left:2em;padding-right:2em;margin-left:auto;margin-right:auto;position:relative;width:36em;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;position:relative;margin-left:-25px;margin-right:25px;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;position:relative;padding-top:0px;padding-bottom:9em;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;position:relative;margin-bottom:0px;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:0px;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:0px;\\\"><h1 style=\\\"border:0px;font:inherit;vertical-align:baseline;font-family:&quot;PT Serif&quot;;text-align:left;font-size:35px;font-weight:normal;line-height:35px;margin-bottom:20px;padding:0px;margin:0px;\\\">openwrt 上通过 pdnsd 和 dnsmasq 解决 dns 污染</h1><div style=\\\"padding:0px;border:0px;font:inherit;vertical-align:baseline;position:relative;height:1em;line-height:1;text-align:center;padding-top:1.5em;padding-bottom:1.5em;margin:0px;margin-bottom:0px;\\\"><div style=\\\"padding:0px;border:0px;font:inherit;vertical-align:baseline;position:absolute;left:-4em;top:50%;z-index:10;width:100%;padding-left:4em;padding-right:4em;height:0.1em;opacity:0.5;background:-webkit-linear-gradient(0deg, rgb(243, 242, 238) 1%, rgb(31, 9, 9) 50%, rgb(243, 242, 238) 99%);margin:0px;margin-bottom:0px;\\\"><span style=\\\"font:inherit;position:absolute;left:-4em;top:50%;z-index:10;width:100%;padding-left:4em;padding-right:4em;height:0.1em;margin:0px;opacity:0.5;background:-webkit-linear-gradient(0deg, rgb(243, 242, 238) 1%, rgb(31, 9, 9) 50%, rgb(243, 242, 238) 99%);\\\"></span></div></div></div>\\\n  <p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">\\\n      gfw\\\n      openwrt\\\n      dnsmasq\\\n      pdnsd\\\n      dns-spoofing\\\n  </p>\\\n\\\n  <p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">\\\n    <span style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;\\\">Dec 20th, 2012</span>\\\n      <span style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;\\\">Updated Dec 20th, 2012</span>\\\n\\\n    by <a style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;color:rgb(6, 85, 136);text-decoration:none;\\\" target=\\\"_blank\\\">sunteya</a>\\\n\\\n    \\\n  </p>\\\n\\\n\\\n  <div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\"><p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">以前一直在路由器上改域名 ip 来解决 google 系列服务无法使用的问题, 不过斯巴达以来 google 就没有一个相对稳定的 ip 可以指定了, 经常是好了一天第二天又失效了, 被逼着走代理之类的, 真心的烦躁.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">不过浏览器啥的都还好, 走走代理无所谓但对于一些应用比如 Things 或者 nvALT 之类用 GAE 同步的软件就比较麻烦了. 那些软件本身并不能代理设置只有系统全局的, 但全局的又会导致那些国内的软件缓慢.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">当然要解决上述问题方法有很多, 但如果可以通过 dns 来解决的话, 只要能在路由器上设置下. 下面的所有设备就自然而然的解决的, 特别是对于那些不能 root 的 android 或者 iphone 来说, 会方便很多很多.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">当然修改 dns 之类的只能解决污染问题, 对于 ip 封锁或者 关键字封锁也是没有任何办法的. 所以只有那种全面启用了 https 并且 在全球有很多服务器那种网站才能完美的解决, 典型的例子就是 google .</p>\\\n\\\n<h2 style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:&quot;PT Serif&quot;;text-align:left;font-weight:bold;font-size:30px;line-height:35px;margin-top:35px;margin-bottom:1.5em;\\\">目前 dns 污染流程</h2>\\\n\\\n\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">当需要访问某个网站的时候, 系统自动的向 dns 查询当前这个域名对应的 ip 地址, 如果当前 dns 无法回答时候, 它又会向它的上级 dns 取查询直到找到为止. 但那些 dns 服务器如果在 GFW 外的话, 当经过 GFW 时, GFW 就会检测请求的域名. 如果是被屏蔽的话, 就会返回一个错误的 ip 导致网站无法访问.</p>\\\n\\\n<div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;display:block;margin-bottom:1em;margin-top:1em;\\\"><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;display:block;text-align:center;margin-top:1em;margin-bottom:1em;\\\"><img src=\\\":/3a9606813fa043e2b2d684c406252615\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" height=\\\"260\\\" style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;border-color:rgb(31, 9, 9);display:block;max-width:100%;\\\" width=\\\"396\\\"/></div>\\\n<div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;display:block;\\\">简单 dns 请求流程 (凑合看)</div></div>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">经过搜索和研究后发现, 这么多年了过去了 dns 污染还是只污染 UDP 协议, 如果可以用 TCP 协议进行 dns 请求的话就可以得到正确的结果.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">不过找了很久都没找到一个比较好的既支持 tcp dns 请求, 又可以很好可以根据域名来分别处理的软件. 最终还是把方案定为 dnsmasq + pdnsd 的方案. pdnsd 主要提供一个无污染的 dns, dnsmasq 主要根据域名来切换相应的 dns.</p>\\\n\\\n<h2 style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:&quot;PT Serif&quot;;text-align:left;font-weight:bold;font-size:30px;line-height:35px;margin-top:35px;margin-bottom:1.5em;\\\">pdnsd</h2>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">主要用来解决污染问题, 在 openwrt 上直接找到 pdnsd 包安装就可以了.</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\">opkg update\\\nopkg install pdnsd\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">安装好以后还需要修改 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">/etc/pdnsd.conf</code>, 其主要配置如下:</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\">global {\\\n\\t# debug = on;          # 调试模式, 日志会写入 /var/pdnsd/pdnsd.debug\\\n\\tperm_cache=1024;\\\n\\tcache_dir=&quot;/var/pdnsd&quot;;\\\n\\trun_as=&quot;nobody&quot;;\\\n\\tserver_port = 1053;    # 使用 1053 作为 dns 端口, 默认是 53\\\n\\tserver_ip = any;\\\n\\tstatus_ctl = on;\\\n<span style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(234, 226, 96);transition:background-color 0.4s ease 0s;color:black;font-weight:inherit;font-style:unset;-evernote-highlight:true;\\\" title=\\\"点击以取消高亮显示\\\">\\tquery_method=tcp_only; # 最重要的配置, 只使用 tcp 查询上级 dns</span>\\\n\\tmin_ttl=15m;\\\n\\tmax_ttl=1w;\\\n\\ttimeout=10;\\\n}\\\n\\\nserver {\\\n\\tlabel= &quot;wido&quot;;           # 这个随便写\\\n<span style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(234, 226, 96);transition:background-color 0.4s ease 0s;color:black;font-weight:inherit;font-style:unset;-evernote-highlight:true;\\\" title=\\\"点击以取消高亮显示\\\">\\tip = ${UPSTREAM_DNS_IP}; # 这里为上级 dns 的 ip 地址</span>\\\n\\troot_server = on;        # 设置为 on 后, 就代替系统默认的 dns 了.\\\n\\tuptest = none;           # 不去检测 dns 是否无效.\\\n}\\\n\\\nsource {\\\n\\towner=localhost;\\\n#\\tserve_aliases=on;\\\n\\tfile=&quot;/etc/hosts&quot;;\\\n}\\\n\\\nrr {\\\n\\tname=localhost;\\\n\\treverse=on;\\\n\\ta=127.0.0.1;\\\n\\towner=localhost;\\\n\\tsoa=localhost,root.localhost,42,86400,900,86400,86400;\\\n}\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">其中的 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">${UPSTREAM_DNS_IP}</code> 需要设置成, 支持 TCP dns 查询的服务器.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">可以用 8.8.8.8 这个 google 的 dns 但不是很推荐, 主要是他返回的 ip 虽然没污染, 但这个 ip 很可能也是被封的. 最好是那些 台湾, 日本, 或者美国东部的 dns. 目前大陆默认走的就是香港的 google 服务器, 所以香港的 dns 也不予考虑.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">当然最好的方案还是, 如果你自己在海外有 VPS 那就在服务器上装个 pdnsd 来做 dns 服务器吧.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">可以用命令</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\">dig @8.8.8.8 +tcp www.google.com\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">来做测试, 不过也遇到过 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">+tcp</code> 可以访问但实际无法用 pdnsd 连接的情况具体原因未知. 我这是自己服务器搭了 pdnsd 解决的.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">在找到可用的 dns 后, 接着修改回 pdnsd.conf 文件后输入</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\">/etc/init.d/pdnsd enable\\\n/etc/init.d/pdnsd start\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">启动路由器上的 pdnsd 服务之后就可以通过命令 (<code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">@192.168.2.1</code> 根据自己家的网络情况改)</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\">dig @192.168.2.1 -p 1053 www.google.com\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">来检测是否已配置好, 还是不行的话, 可以尝试开启 pdnsd.conf 的 dubug 模式看详细的日志, 配合 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">pdnsd-ctl help</code> 来做进一步处理.</p>\\\n\\\n<h2 style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:&quot;PT Serif&quot;;text-align:left;font-weight:bold;font-size:30px;line-height:35px;margin-top:35px;margin-bottom:1.5em;\\\">dnsmasq</h2>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">本来指望 pdnsd 把 dnsmasq 的任务也一并解决的, 不过研究后发现他并不能将特殊的域名交给特殊的 dns 处理, 所以这部分功能还需要交给 dnsmasq.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">对于 openwrt 来说默认就安装好了 dnsmasq, 所以这里只需要简单的编辑 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">/etc/dnsmasq.conf</code>, 再最后加入</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\">conf-dir=/etc/dnsmasq.d\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">让 dnsmasq 会去加载 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">/etc/dnsmasq.d</code> 目录下所有的配置.</p>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">然后在建一个 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">/etc/dnsmasq.d/gfw.conf</code> 这样的文件, 把需要进化的域名代理给 pdnsd 就可以了, 例如:</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\"># google\\\nserver=/.google.com/127.0.0.1#1053\\\nserver=/.gstatic.com/127.0.0.1#1053\\\nserver=/.googleusercontent.com/127.0.0.1#1053\\\nserver=/.appspot.com/127.0.0.1#1053\\\nserver=/.googlecode.com/127.0.0.1#1053\\\nserver=/.googleapis.com/127.0.0.1#1053\\\nserver=/.gmail.com/127.0.0.1#1053\\\nserver=/.google-analytics.com/127.0.0.1#1053\\\nserver=/.youtube.com/127.0.0.1#1053\\\nserver=/.blogspot.com/127.0.0.1#1053\\\nserver=/.blogger.com/127.0.0.1#1053\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">之后重启 dnsmasq 服务</p>\\\n\\\n<pre style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;background-color:rgb(243, 242, 238);font-family:Inconsolata;width:auto;font-size:0.875em;line-height:1.71429em;\\\"><code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;line-height:1.71429em;font-size:1.15em;\\\">/etc/init.d/dnsmasq restart\\\n</code></pre>\\\n\\\n<p style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;\\\">一般来说这样折腾以后 google 系列的服务应该就可以访问了, 当然也可以按这个写法自己加其他的域名. 比如 <code style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:Inconsolata;font-size:0.875em;line-height:1.71429em;\\\">.facebook.com</code>, 具体的还得是满足 ip 没被封且关键字不被过滤(https) 的网站才行.</p>\\\n\\\n<h2 style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:&quot;PT Serif&quot;;text-align:left;font-weight:bold;font-size:30px;line-height:35px;margin-top:35px;margin-bottom:1.5em;\\\">参考资料</h2>\\\n\\\n\\\n</div>\\\n\\\n\\\n  <div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;display:block;position:relative;margin-top:1.5em;padding-top:1.5em;\\\"><span style=\\\"font:inherit;position:absolute;left:25%;top:0px;z-index:10;width:50%;padding-left:0px;padding-right:0px;height:0.1em;margin:0px;opacity:0.25;display:block;background:-webkit-linear-gradient(0deg, rgb(243, 242, 238) 1%, rgb(31, 9, 9) 50%, rgb(243, 242, 238) 99%);\\\"> </span>\\\n    <h1 style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;font-family:&quot;PT Serif&quot;;text-align:left;font-size:35px;font-weight:normal;line-height:35px;margin-bottom:20px;\\\">Comments</h1>\\\n    \\\n  </div>\\\n</div></div></div><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;margin-bottom:1.5em;position:absolute;top:-1000px;left:-1000px;\\\">Measure</div><div style=\\\"margin:0px;padding:0px;border:0px;font:inherit;vertical-align:baseline;position:absolute;top:-1000px;left:-1000px;line-height:1;margin-bottom:0px;\\\">Measure</div></div></div></div></div></div></div></div>\\\n</div>\\\n</span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":16880}]"
metadata_diff: {"new":{"id":"2839ef2a36294274b06b80ca90f85b4a","parent_id":"061de1401cfc4cfaadf6e74e015970e9","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764345785207,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T16:20:16.225Z
created_time: 2025-11-28T16:20:16.225Z
type_: 13