跟着不良林,处理DNS泄露问题


不良林的视频估计是中文网络技术相关最强的视频内容了,今天抽空跟着教程处理一下 DNS 泄露的问题。视频参考 # 进阶•DNS 泄漏篇】竟能提速降延迟!再也不用担心 DNS 污染了!

查询 DNS 泄漏:https://ipleak.net

阅读全文

Cloudflare使用 edgetunnel 无法使用passwall的解决方法

问题

使用 edgetunnel 的教程,部署完 pages 和 worker,小火箭,各种客户端都能正常用,就是 passwall 不行。现象就是,在 openwrt 的后台,使用 passwall 可以订阅,也有 ping 值,但是选为代理,就不能访问。

原因

真实的技术原因不太清楚,目前试用下来就是因为域名的 dns 在 Cloudflare,如果使用了小云朵的代理,passwall 就不可用。

解决方法

一定要使用 pages 部署,因为 worker 方式部署,DNS 配置没有小云朵开关,小云朵没法关闭,至少我没找到。

使用 pages 部署完,去 DNS 设置这里,小云朵关掉,把代理改为仅 DNS,passwall 可以用了。

阅读全文

上海联通,单线复用,VLAN,Openwrt 相关设置

起因

家里的网络一直比较简单,也没怎么大折腾。
1、光猫改桥接,目的是获取公网 IP,
2、连一个 R4S 的双口软路由,目的是拨号、passwall2、端口转发等
3、然后再连一个路由器,设置成 AP 模式,有线接 NAS,无线当 WIFI。

一直这种方式用了几年,也省心,线路简单,也不需要复杂配置。偶尔距离路由器远的房间,信号差一点。最近把 AP 从华为的 AX6 的 WIFI6,换成了华为 BE3 Pro 的 wifi7。这样就多出了一个路由器,想着平常房间信号不好,准备用有线的方式多装个 AP,刚好不浪费。

问题来了:
1、弱电箱只有 2 个电源插口,一个光猫,一个软路由,也没法再加个交换机
2、R4S 只有 1 个 LAN 口,接了第一个 AP,就没法接第二个了

解决方法:
1、光猫上还剩下 3 个网口,似乎可以利用一下

经过

在不改造所有硬件线路的情况下,所有网线还是从弱电箱出去,通过光猫剩余的网口,接 AP 用。
步骤如下:
1、光猫配置 VLAN,我是上海联通,ID 是 847,每个地方不同;绑定到网口 1
2、光猫的网口 1 连上 Openwrt 的 WAN 口,配置拨号设备为 vlan.847
3、Openwrt 配置 br-lan,除了默认的 eth1,再加一个 vlan.1

阅读全文

德斯曼门锁iOS版


搬家完之后,大门锁是一个德斯曼门锁,型号是 T700,指纹识别特别拉胯,加上自己的手换季就有点脱皮,所以门锁一直用官方 app 开门,每次开门,都需要打开 App,靠近门锁,点击一下一键开门。

用了几个月之后,突然想到为啥这个门锁不支持像 Tesla 一样,靠近自动解锁呢?于是,我就在 app 上提了一个意见反馈,希望可以像 Tesla 一样,只要手机靠近,拉一下门把手就开门的功能。可能这个锁太小众,或者开发人员是外包?提交了需求,三个月过去了,后台一直都是待回复。

于是,自己写一个吧,虽然,没做过 iOS 开发,不过也不用做界面,就做蓝牙调用就好了。

分析协议

网络请求

iOS 使用 stream 抓包,获取网络 Http 请求,很容易就能找到 2 个关键请求。

/lock/command/secret 获取 command_secret ,这个值测试下来是固定的。

/lock/open/new 开锁

所有的请求使用 sessionId 进行用户验证,亲测一个 sessionId 基本可以用很久,几个月都不会过期。

蓝牙请求

使用 https://github.com/jnross/Bluetility 这个工具,即可扫描蓝牙设备,获取广播信息。可以找到锁的蓝牙特征值

1
central.scanForPeripherals(withServices: [CBUUID(string: "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"),], options: [CBCentralManagerScanOptionAllowDuplicatesKey:**true**])

做个 App

拿到这些所有数据,就可以开始做个 app 了。步骤
1、蓝牙扫描周围设备,如果发现设备名称为 “LOCK_1234”的设备,即是自己的锁,1234 为锁的蓝牙 Mac 地址后 4 位拼接。
2、连接这个设备。
3、处理 notifyService 和 writeService。
4、将 Http 请求获取到的 command_secret 使用 hexWrite 写入蓝牙锁,锁会返回一个 secret 值。
5、使用锁返回的 secret 值,调用 /lock/open/new 即可获取开锁的 command
6、使用 hexWrite 写入 command ,锁就开了。

通过上面的流程,就可以完成一次开锁了,如何像 Tesla 一样,靠近,拉门把手,就开锁呢?
处理 deviceDidDisconnect 方法就可以了。断联后,自动等待下次连接,这个指令有 iOS 调度,所以也不用担心 App 后台的问题。

最终效果,还挺好,每天开门都不用掏手机了。

阅读全文

qbittorrent配合passwall的一些网络配置


家里的网络一直是 openwrt+passwall+unraid+qbittorrent 做下载管理,在 m-team 和 zmpt 的网页上,每次看到接入 ip 有时候是本地网络,有时候又是代理,一直也没太关注,直到突然最近 m-team 判定为盒子,于是仔细设置一下网络。

问题在哪

1、 qbittorrent 的 Host 网络。unraid 上通过 docker 安装的 qbittorrent,容器开通的是 host 网络,因为 host 可以直接使用 upnp,虽然网上对安全性差一点,不过 Host 有更好的网络效率。这就导致 qbittorrent 的设置页面有很多的网络接口和 Ip 地址,服务端识别到很多的 IP,可能某次调整网络的时候,直接走了代理,就判定盒子了。

阅读全文

PDF调整尺寸到A4大小裁剪白边


这是示例代码,主要处理 PDF 的去白边,再将尺寸调整为 A4 标准大小。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import fitz  # PyMuPDF

# 打开PDF文件
pdf_path = 'input.pdf'
pdf_document = fitz.open(pdf_path)

# 创建一个新的PDF文件
output_pdf_path = 'utput.pdf'
output_pdf_document = fitz.open()

# 白边裁剪尺寸
margin = 8

# 遍历每一页PDF并调整大小
for page_number in range(len(pdf_document)):
# 获取原始页面
page = pdf_document[page_number]

# 获取页面大小
page_width = page.rect.width
page_height = page.rect.height

# 计算裁剪后的页面大小
crop_width = page_width - 2 * margin
crop_height = page_height - 2 * margin

# 定义裁剪区域
crop_rect = fitz.Rect(margin, margin, margin + crop_width, margin + crop_height)

# 将页面转换为图像 (裁剪白边)
pix = page.get_pixmap(dpi=150, clip=crop_rect)
image = fitz.Pixmap(fitz.csRGB, pix)

# 计算调整后的页面大小
A4_width = 595 # A4纸的宽度
adjusted_height = int(crop_height * A4_width / crop_width)

# 创建新页面并插入调整后的图像
output_pdf_page = output_pdf_document.new_page(width=A4_width, height=adjusted_height)
output_pdf_page.insert_image(output_pdf_page.rect, pixmap=image)

# 保存新的PDF文件
output_pdf_document.save(output_pdf_path)

output_pdf_document.close()
pdf_document.close()

print("转换完成!")

阅读全文

iOS17修改虚拟定位地址


iOS 17 虚拟定位似乎和以前 iOS 不太一样了,以前一直用 LocationSimulator,现在手机更新到 iOS17 后,就不能用了,找到一个新的项目。可以使用了。kinesis

注意事项:
1、下载 https://github.com/kkpan11/kinesis 这个 pull request 的项目,因为我也遇到同样的问题

1
# Fix the AttributeError: '_RSAPrivateKey' object has no attribute 'write'

2、python 使用 3.11.6,实测 3.12.* 是不行的

1
2
3
4
conda create --name kinesis python=3.11.6
conda activate kinesis
pip install -r requirements.txt
sudo python3 main.py

3、如果提示 pymobiledevice3 相关的错误,可以尝试更新依赖。

1
pymobiledevice3==2.18.1

阅读全文

清理Docker文件夹的大小

查询一下文件夹的大小 1du -h --max-depth=1 清理 Docker 没有使用的文件 1docker system prune -a -f

阅读全文

Git中忽略一个已经存在的文件夹


要忽略名为 RedisData 的文件夹,您可以在项目根目录下创建一个名为 .gitignore 的文件,并在其中添加以下内容:

1
RedisData/

这将告诉 Git 忽略名为 RedisData 的文件夹及其内容。确保每行一个忽略规则,并在规则后面添加斜杠 / 表示忽略整个文件夹。

阅读全文

拷贝ollama模型,从Mac到Debian


平常使用的电脑是一台 Mac,使用的 M1 max 64G 的内存,下载了 ollama 的模型。拷贝到家里的 Debian 电脑上。

从 Mac 模型目录,复制整个 .ollama文件夹

1
/home/ron/.ollama/

到 Debian 的模型目录

1
/usr/share/ollama/.ollama

Debian 上,修改目录权限

1
sudo chown -R ollama:ollama /usr/share/ollama/.ollama

这样就可以正常运行了。

阅读全文