-
Chromium + Mitmproxy 组合使用踩坑
背景 众所周知,Chromium 目前是事实上的地表最强浏览器内核,Mitmproxy 是事实上地表最强的中间人代理工具。二者组合使用可以非常方便的进行控制与数据分离的自动化数据提取。不过在实际生产中大规模使用时,还是会或多或少的遇到了一些难以察觉的坑。。。 Mitmproxy 低版本长期运行易 OOM 现象 在容器中部署 chromium + mitmproxy 后,发现在多次访问某些类型网站时,mitmproxy 经常周期性地出现内存缓慢增长,直到超过 docker 限制而被 O…
-
记一次家庭科学网络架构调整
背景 年初入了折腾软路由的坑,买了个 R66s 玩了玩。考虑到是头一次折腾,各个地方的配置都比较保守,没有默认将所有的网关都设置成 R66s ,而是由各个客户端手动配置到软路由网关。用了一段时间下来感觉在正常使用的情况下都还是很稳的,于是打算配置的更激进一点。 刚巧,之前移动的人总是打电话过来,说他们之前给我装的光猫有故障,把某个什么设备的端口打满了,导致影响了其他用户的使用(不过我用起来都很正常),希望能上门我换一个新的光猫。 考虑到一直接电话实在不胜其烦,于是就同意让他们上门换了一波。…
-
Ghost 解决 jsdelivr 资源加载慢的问题
背景 用了很久的自建 Ghost 博客系统不知道从哪个版本开始,页面加载速度忽然变慢了很多。看了下加载的资源,发现多了很多走 jsdelivr cdn 的资源,加载速度竟然长达半分钟。。。 本来选择自建博客系统的重要目的之一就是为了页面加载速度可控,尽量避免加载不可靠、容易被墙的第三方资源。结果没想到 Ghost 官方又在核心模块里引用了第三方的 CDN。 不过还好 Ghost 项目本身的配置化做的还是不错的,大年初六上班摸个鱼的时间解决了一下。 解决 仔细看了下,新加入的走 CDN…
-
OpenWrt+R66s 软路由入门尝鲜
背景 随着家里电子设备越来越多,客户端维度的科学上网配置已经逐渐支持不了日常需求了: 1. 设备数量越来越多;配置不过来,且容易触发机场的客户端连接上限。 2. 设备类型越来越多;安卓端、IPhone端、IPAD端、Mac端、树莓派端、PC端、Kindle端,需要的客户端各不相同,配置的思维负担太大,甚至有些类型的设备没有靠谱的客户端。 3. PAC规则越来越多;自己通常会有一个主要用的PAC规则,但是当换设备后,就需要重新配置,非常麻烦。 于是趁着工作之闲,研究了一下软路由,一站式…
-
爬虫浏览器的Cloudflare五秒盾处理
背景 近期业务有不少涉及到国外的网站,本以为经受了和国内大量卷王公司对抗的考验之后,处理国外业务应该是降维打击才对。结果本地测试的时候的确很OK,但是一上线就发现全面飘红,多个不同业务同时出了 Cloudflare 著名的五秒盾: 根据 Cloudflare 的说明,只要是使用 Cloudflare 的域名解析服务,默认都会自动“享受” 他家的一系列防护服务(尤其是 Javascript 防护)。具体特征就是会在/cdn-cgi/challenge-platform/ 下嵌入风控逻辑。他们会…
-
PDF字体乱码问题分析
背景 最近身体有恙,于是就想起来整理下这几年体检的电子报告汇总看看。结果发现在善诊平台下载的体检报告在电脑上看直接乱码了。不过这种字符集的问题怎么能难得了本码农呢,所以就尝试起各种办法进行恢复,结果发现这果然是个深坑。。。 问题 本来好好的一个 PDF 报告,结果打开后画风是这样的: 我本地的环境是 Macbook,尝试了用 Chrome 打开、自带的 Preview 工具打开,都是同样的结果。除了 ASCII 字符能展示,其他所有的中文信息都没有,但是 PDF 中的所有图片都能正常展…
-
记一次SSH下无法umount磁盘的问题
问题 最近在用 吃灰树莓派 + 外接硬盘盒 搭建 NAS ,由于硬盘默认的文件系统是 NTFS ,出于种种原因(参考这里),Linux 下的写入速度特别慢(我这里的酷鱼1T写入只有33MB/s)。于是我打算把硬盘格式化成 ext4 。 但是在测完速后准备 umount 当前磁盘(/media/pi/Seagate)时,却发生了报错: $ dd bs=1M count=256 if=/dev/zero of=/media/pi/Seagate/test conv=fdatasync 256+…
-
Linux主机性能测试方法
背景 最近打算用躺家吃灰的树莓派4B搭一个NAS,用来快捷方便地访问和备份一些资源。由于备选的硬件(芯片、硬盘、网线、路由器等)和软件(内网穿透技术)的技术选型比较多,这时候就需要有一个能简单评估服务性能的方法。因此简单搜寻了一下常见方案,方便在技术选型时有个统一的对比标准,并且对一些常见指标能在数量级上有一些感性的理解。 硬盘 对于硬盘的读写速度测试,首先我们需要注意根据读写的实现细节不同,测试出的结果会有很大的差别。例如对于读来说,是否走缓存读、缓存的大小如何;对于写来说,是否只写缓…
-
利用 Redsocks 解决透明代理的远程抓包问题
背景 最近在做一些远程设备的抓包能力建设。具体来说是设备(基于 Docker 的 Redroid 云手机)在服务器上,抓包工具在本地( Mitmproxy , Charles, Fiddler 等类似工具),希望通过某种方法将远程设备上的流量打到本地的抓包工具上,并且流量通过本地的 IP 出到公网。 这样做的目的主要有两个: 1. 可以做到抓包工具和待抓包设备的分离。既能利用上强大的第三方抓包工具,又无需本地部署待抓包的设备。毕竟如果在远程服务器上部署抓包工具,操作起来就不那么方便,甚至…
-
利用 FFmpeg 将视频转换为 GIF 操作指北
背景 在写技术文档的时候,为了演示方便,经常需要插入一些短小的视频资源。比如一些操作的录频、一些经典视频片段、一些科普动画等。由于展示的地方通常是网页,而如果是插入视频之类的资源,通常需要占用额外的存储,而且也需要可用的视频播放器的支持,非常不便。对于命令行操作的回放,我们可能会采用 Asciinema,但是这个方案对非终端的操作无法模拟。一个常见的方案是把需要的资源转换成网页支持的 GIF、WEBP 格式等动图。考虑到各大浏览器对 GIF 格式的支持最稳定,因此大部分情况下我们都想将待展示的…