把 github pages 的 cname 问题解决了,以前每次 deploy 以后自定义域名就失效,原来是必须要 CNAME 是大写才行。而如果上传了小写的,再改成大写重新部署也不行,因为 win 识别不出来大小写是否有变化。
于是先删除 cname push 一次,再重新把大写的 CNAME 放到 source 目录重新部署一次,就解决了。

又把 hexo 的 permalink 都改了一下,原来的直接就是http://blog.website.com/post-name/ 现在改成了 http://blog.website.com/post/post-name/,不光视觉上对齐了,repo 里的目录格式也整洁多了。

还把过去文章的分类也加上了。

这些相关概念有:

  1. netlify、vercel 部署托管服务⬆️
  2. (github\cloudflare pages 静态网页托管)⬆️
  3. github forked repo(forked的别人的库)⬆️
  4. github action⬆️
  5. github upstream repo(别人的源代码库)⬆️

我现在使用 vercel 的流程就是,github 上游的代码一更新,action 就会定时将其同步到我自己 forked 的 repo. 然后 netlify、vercel 这类部署服务自动检测到代码有修改,就会重新部署。然后网站就自动更新了。

github 和 cloudflare 的 pages,类似 vercel,就是将仓库里的静态文件传输到一个 http 服务器并为它分配一个可以公开访问的域名(也可以自定义拥有的域名)。区别就是 pages 只能部署纯静态文件,而 vercel 则能编译(build)较复杂的 js 框架。

hexo 这类静态博客,往往都是自己在本地搭建构建环境,每次写完就生成静态文件上传到 github 仓库,然后 pages 将仓库的更新同步到到静态网页 http 服务器。

cloudflare worker 则是只负责托管 http 请求的服务,连静态文件都不需要。

vercel部署的脚本,dns服务器是cf,本来设置的解析到某个ip,dns check和17ce.com都没问题,但是今天quantx打开发现被解析到另外一个cf海外ip,导致墙内不能直接访问。

quantx设置了好几个dns服务器,不想手动检测,搜了一下发现这个脚本,批量处理多DNS多域名的nslookup解析

前两天用gpt的时候,装好了python环境,这下试试能不能自己应用一个脚本解决实际问题。

代码很简单,就是新建一个csv文件,填好内容,然后执行就行了。ide用了最近很火的cursor,虽然我现在的编程程度其实连ide是什么意思都不清楚。

遇到报错,一直提示没有domain字段,翻来覆去地检查,明明没有问题啊,用cursor的提示找到了思路,把它的编码修改了,重新保存,再执行命令,就没问题了!可能是从网页直接复制代码到cursor的过程中编码变了。

update:还是有问题,导出的csv后面是乱的,

后来我干脆换了个思路,直接告诉cursor,我想做啥,让它从头写代码。

结果太吃惊了,只用了三个提示词,就完美达成了效果。现在的版本还只是gpt3.5啊!

提示词:

1、利用

1
2
3
import subprocess
import csv
import time

用指定的多个dns,遍历解析指定的域名(逐个执行nslookup命令)并将结果导出csv。

2、执行过程中要有提示:比如正在使用哪个dns服务器、解析哪一个域名

3、在输出的csv文件中,增加一个列:域名列

cursor最后生成的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import subprocess
import csv
import time

dns_list = ['8.8.8.8', '8.8.4.4', '208.67.222.222', '208.67.220.220']
domain_name = 'example.com'
output_file = 'dns_results.csv'

with open(output_file, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Domain Name', 'DNS Server', 'IP Address']) # added 'Domain Name' column

for dns in dns_list:
print(f"正在使用DNS服务器: {dns}")
print(f"正在解析域名: {domain_name}")
command = f'nslookup {domain_name} {dns}'
result = subprocess.run(command, capture_output=True, text=True)
ip_address = result.stdout.split('Address: ')[-1].split('\n')[0]
writer.writerow([domain_name, dns, ip_address]) # added domain_name to the row
time.sleep(1) # to avoid overwhelming the DNS servers

执行命令:

执行解析后,自动生成的表格如图:

一个不懂编程的人,就这样完成了一个程序,代码量比网上搜到的方案还少。这个能力真的太恐怖了。

继续尝试,这个脚本还是有点小问题:1、如果解析失败,csv文件里的ip会显示为dns服务器的ip。2、如果有多个解析结果,只会显示第一个。

debug半天没有完全修复。试着用英文提问,再次重新码。又经过很久的调试,现在的解决几乎完美:

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
import csv
import os

dns_servers = ['1.0.0.1','8.8.8.8','119.29.29.29','1.12.12.12','233.5.5.5','9.9.9.9','208.67.222.222']
domains = ['imfine.eu.org'] # list of domains to lookup

results = [] # list to store results

for domain in domains:
for server in dns_servers:
print(f"\n等待DNS服务器:【{server}】 解析域名:【{domain}】")
response = os.popen(f'nslookup {domain} {server}').read() # run nslookup command
ip_address = response.split('addresses:')[-1].strip() # extract IP address from response
results.append([domain, server, ip_address]) # add result to list
print(f"解析结果: {ip_address}\n") # print IP address

# write results to csv file
try:
with open('dns_results.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Domain', 'DNS Server', 'IP Address'])
writer.writerows(results)
print('DNS lookup complete. Results saved to dns_results.csv')
except Exception as e:
print(f"Error occurred while writing to csv file: {e}")
raise e


这个问题困扰我很久了,网上根本搜不到相关的信息。

Question:

那么我明明设置了有效的tls\doh上游, 但是adguard home的dns查询页面,加密DNS的图标始终是灰色的,显示协议:无加密DNS,以及,我只是让adguard home充当dns客户端,为什么开启加密功能还要设置ssl域名证书?既然让adguard home充当dns客户端不需要设置ssl域名证书,那为什么日志里显示还是非加密协议?

Answer:

AdGuard Home 在显示 DNS 查询日志时,加密 DNS 的图标可能是灰色的,因为它显示的是客户端与 AdGuard Home 之间的连接协议,而不是 AdGuard Home 与上游 DNS 服务器之间的连接协议。 实际上,AdGuard Home 可能已经在与上游 DNS 服务器使用加密协议(如 DoT 或 DoH)进行通信,但客户端与 AdGuard Home 之间的连接仍然是基于传统的、未加密的 DNS 协议。
关于设置 SSL 证书的问题,当 AdGuard Home 作为 DNS 客户端时,确实不需要设置 SSL 证书。SSL 证书的设置主要用于 AdGuard Home 作为 DNS 服务器时,允许客户端通过加密协议(如 DoT 或 DoH)与其通信。这种情况下,AdGuard Home 需要证书来验证其身份,以确保客户端与服务器之间的通信安全。
综上所述,AdGuard Home 的 DNS 查询日志显示为“无加密 DNS”,是因为它展示的是客户端与 AdGuard Home 之间的连接协议。而实际上,AdGuard Home 可能已经在与上游 DNS 服务器使用加密协议进行通信。在 AdGuard Home 作为 DNS 客户端时,不需要设置 SSL 证书。SSL 证书的设置主要用于 AdGuard Home 作为 DNS 服务器,允许客户端通过加密协议与其通信。

后来还发现那个小锁一样的图标,其实是关于dnssec的,本来也和dot\doh无关…

  1. 先通过这几个网站查询是否能被正常访问。
  2. 如果网站服务器本身没有问题,通过多个dns服务器查询网站ip
  3. 如果只有一个ip(没有CDN的网站一般是这样),检查和本机nslookup的ip是否一致,判断是否被污染。

1、先提问一个引导词让AI自己回答

什么是小红书式的语言

它的回答大概是:

小红书是一个主打时尚美妆、旅行和生活方式的社交平台,小红书的用户群体主要是年轻女性,因此小红书的语言风格也有一些独特的特点。
小红书式的语言通常是比较随意、轻松的,充满了年轻人的俚语和网络用语,同时也包含了一些不太正式的表达方式和拼音缩写。此外,小红书上的语言风格也比较亲切、友好,常常使用一些粉色、可爱的元素来渲染氛围,这些特点也让小红书的语言风格显得比较独特,深受一些年轻用户的喜爱。

2、紧接着再回复第二句prompt:

那么请你用小红书式的语言改写这段话: [之前AI生成的语言]


一个例子,原本的AI生成的文本:

非常感谢你的意见和建议,我很感激你和我进行友好的讨论。我想说的是,尽管我们不能达成完全的一致,但是我们可以通过倾听和尊重他人的看法,让自己变得更加开放和包容。谢谢你和我分享你的观点,让我们互相学习,共同成长。

用小红书提示词改写后的AI文本:

哇塞,感谢你的宝贵建议啊!真的非常感激你愿意和我进行这样友好的讨论呢!也许咱们不能够完全达成一致,但正如你所说的那样,我们依然可以透过倾听,尊重他人的不同看法,来增加更多的开放和包容心,不是吗?感谢你和我分享你的见解,因为有你的想法,让我们都能够获得更多的学习机会,也能够在那个话题上一起成长。所以,真的再次谢谢你的想法和建议,期待有更多机会和你深入交流哦~

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×