星期一, 十月 03, 2022

155 google chrome 浏览器便携化的一个方法, 可以设置成默认浏览器打开, 并且userdata不乱跑

原理还是白嫖paf, 只不过我找了个vbs脚本设置portable.exe为默认浏览器. 

1, 首先去https://portableapps.com/de/apps/internet/google_chrome_portable下载一个paf.exe结尾的文件. 用7zip等工具把它解压出来, 得到other app 7ztemp等文件夹, 和GoogleChromePortable.exe文件, 这里只保留 app文件夹+GoogleChromePortable.exe. 

2, 从这里https://gist.github.com/winhelponline/057064a1dadb3eb9b0aa2b6f05a0331a下载一个chromeportable.vbs, 和 GoogleChromePortable.exe 放在一起. 再在这里新建个Data文件夹, 这样文件夹结构就是

┌─ GoogleChromePortable.exe

├─App

    ┌─AppInfo

    ├─Chrome-bin

    └─DefaultData

├─Data

└─chromeportable.vbs

3, 从https://www.iplaysoft.com/tools/chrome/获取离线安装包, 用7zip等工具把它解压出来, 得到chrome.7z, 再解压得到chrome-bin, 把它放到App文件夹底下. 

4, 现在双击运行chromeportable.vbs, 直接点确定就行. 

5, 打开GoogleChromePortable.exe一次, 正常使用. 

6, 排查从其它地方打开的链接, 能否调起GoogleChromePortable.exe. 

7, 排查 %LOCALAPPDATA%\Google\Chrome\User Data 是否存在.

完成!


重点是vbs设置为默认浏览器, 而且也不能用chrome里的设置默认, 否则userdata会回到 %LOCALAPPDATA%\Google\Chrome\User Data 中


为了防止误点到静默安装包, 或者误点到chrome主程序, 可以在%LOCALAPPDATA%下建一个空文件, 取名Google, 设置为只读, 实测静默安装包不会释放文件, chrome.exe也无法启动. 


!每次升级需要手工下载安装包解压后放入App文件夹. 

星期六, 十月 01, 2022

154 clash for windows 和 adguard home 的冲突问题: 拦截的广告域名被拉进了代理并解析成功

由于clash mini出现的各种小问题, 最终还是转向了clash for windows. 这屎山electron应用... 不过看日志确实方便, 方便我找出那些广告和收集隐私的域名. 

前面折腾了一个勉强能用的便携版, 也算不错. 

但是我本地有个adguard home, 就搭在路由器上, 也是我内网中唯一的dns. 上游dns是国内的ip doh, 目前没有劫持和污染. 


机场规则乱七八糟, 这一看就是从网上订阅规则合并的: 

    - 'DOMAIN,dl.google.com,全球直连'

    - 'DOMAIN,dl.l.google.com,全球直连'

    - 'DOMAIN,update.googleapis.com,全球直连'

    - 'DOMAIN,fonts.googleapis.com,全球直连'

    - 'DOMAIN,fonts.gstatic.com,全球直连'

瞎写是吧? 照这么用, 特么十次里面得有八次字体是方块. 于是我就这么写mixin: 

mixin:

  dns:

    enable: true

    listen: 127.0.0.1:5335

    nameserver:

      - 192.168.10.1:5335

  rules:

      - 'DOMAIN-SUFFIX,local,DIRECT'

      - 'IP-CIDR,192.168.0.0/16,DIRECT,no-resolve'

      - 'IP-CIDR,10.0.0.0/8,DIRECT,no-resolve'

      - 'IP-CIDR,172.16.0.0/12,DIRECT,no-resolve'

      - 'IP-CIDR,127.0.0.0/8,DIRECT,no-resolve'

      - 'IP-CIDR,100.64.0.0/10,DIRECT,no-resolve'

      - 'IP-CIDR6,::1/128,DIRECT,no-resolve'

      - 'IP-CIDR6,fc00::/7,DIRECT,no-resolve'

      - 'IP-CIDR6,fe80::/10,DIRECT,no-resolve'

      - 'IP-CIDR6,fd00::/8,DIRECT,no-resolve'

      - 'GEOIP,CN,DIRECT'

      - 'MATCH,🐟 漏网之鱼': 

mixin的功能就是覆盖机场的配置, 在这段代码中, 覆盖了机场的dns和rule两个节点. 我指定dns服务器为我自己内网路由器的5335端口. 写了一些本地局域网直连(DIRECT)的规则. 比较重要的是最后两行, cn分流直连, 剩余的交给漏网之鱼select选择器. 

结果他妈的cfw在adguardhome响应了NXDOMAIN(域名不存在)后, 自己跑去连上代理给我了解析域名, 代理可不管你本地拦不拦截, 全部都会解析. 妈的那我还去个锤子广告? 

于是乎, 把目前上网的工具试了一圈, 没一个好使的, v2rayN一样会把拦截域名拉到代理里解析掉; v2rayA是网页GUI, 做得不错, 但也会拉到代理里; clashy根本没有mixin; HMBSbige / ShadowsocksR-Windows 是.net写的, 占用内存150M+, 不想用, 而且也会拉入代理; netchx那个还行, 但是加上千个cnip路由, cpu直接起飞; 其它的工具都已经很久没有维护了, 要么就得用2019年就停更的 shadowsocksrr / shadowsocksr-android. 

这几年的工具都有一个机制, 它会认为我这些 servfail/nxdomain/refused/空noerror 等等的响应全都是污染, 于是作为后备方案, 工具就会尝试通过代理解析域名... 

后来经高人指点, 得到了一个简单有效又另类的方法, 效果和nxdomain响应差不多. 

在 adguard home - 设置 - DNS设置 - DNS 服务配置 - 拦截模式 这里, 设置成 自定义IP. 在IPv4这一栏填成: 255.255.255.255, 如图: (截图是255.0, 但是实际测试发现255更好, 图片懒得重新截了...)

回到cfw, 在mixin里match的上方加一行规则, 如图: (同上, 懒得重新截图了)

 - 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve'

最后面match跟的是Select选择器, 每个机场可能都不一样, 自己改一下就好. 重启cfw之后, 来看看dns解析情况(刚才为了截图, 解析了域名, 浏览器有缓存, 所以下面我换了个测试域名): 
adguard home里面拦截的域名终于被mixin的规则干死了. REJECT, 哈哈!

浏览器访问被adguard home拦截的域名时, 会立即报这些错: 
ERR_CONNECTION_RESET
ERR_CONNECTION_ABORTED
ERR_CONNECTION_CLOSED
HTTP ERROR 502

找了找, 网上目前没有clash for windows和adguard home之间存在问题的文章, 所以发出来帮助大家. 感谢大佬, 开心😄

20221003更新: 实际测试选用255.255.255.255更好, 懒得截图了.. 
adguard home 返回IP改为: 
255.255.255.255
mixin:  
- 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve'
mixin这破东西, 一定要注意对齐啊...

关于IP-CIDR的转换, 参见: https://www.rocschool.com/tool/ipcidr/