#gpt

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


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

什么是小红书式的语言

它的回答大概是:

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

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

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


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

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

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

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

OpenAI通过LLM大语言模型训练,「涌现」出的语言能力,其可怕之处在于,它能完成任意语言至任意语言的精准翻译。
中英互译完全不足以测出它的完整翻译能力,毕竟有大公司投入巨量人力物力在这一领域。而小语种的在线翻译则不如中英互译那么好用。
下面摘取了哆啦a梦日语版维基百科的一段话,对比google、chatgpt的翻译结果。很显眼,后者的翻译更流畅、准确。

22世紀の未来からやってきたネコ型ロボット・ドラえもんと、勉強もスポーツも苦手な小学生・野比のび太が繰り広げる日常生活を描いた作品である。基本的には一話完結型の連載漫画だが、ストーリー漫画形式となって日常を離れた冒険をする「大長編」シリーズもある。一話完結の基本的なプロットは、「ドラえもんがポケットから出す多種多様なひみつ道具(現代の技術では一部を除き実現不可能な機能を持つ)で、のび太(以外の場合もある)の身にふりかかった災難を一時的に解決するが、道具を不適切に使い続けた結果、しっぺ返しを受ける」というものが多く、前作の「ウメ星デンカ」のストーリー構図をほぼそのまま踏襲しており実質的な後継作品ともいえる。このプロットは、作者の藤子・F・不二雄が自身のSF作品で描いた独自定義「すこし・不思議」(Sukoshi Fushigi)[注 3]という作風に由来し、当時の一般SF作品の唱える「if」(もしも) についての対象を想定した回答が反映されている。

todo: 尝试了把日语原文先后翻译至意大利语、俄语、、日语,最后再翻译成汉语,比较一下经过多重转译后,最后文本的“失真”程度。

提问:防火墙规则里的remote和local是什么意思

GPT回答:

在防火墙规则中,remote和local通常指代网络地址或者网络接口。

remote通常指来源于外部网络的数据流,也就是从远程网络发起的请求或者数据包。

local则指本地网络的数据流,也就是从本地网络发起的请求或者数据包。

这两个概念在防火墙规则中通常用来限制网络流量的方向和来源,以确保网络安全性。例如,当设置防火墙规则时,可以指定只允许来自特定远程网络的数据流通过,或者只允许本地网络的某些主机访问特定的服务等。

提问:如何理解防火墙规则里的remote和local,和入站、出站的关系?

GPT回答:

防火墙中的remote和local与入站和出站是相关但不完全相同的概念。

remote指的是防火墙规则所针对的网络流量的远端,即数据流量的源头或目的地。例如,一个入站规则可能指定从某个IP地址(remote)传入特定端口(local)的流量需要被允许通过防火墙。

local则是指防火墙上被保护的网络本身,也就是防火墙所在的网络。例如,一个出站规则可能指定允许从本地网络(local)通过特定端口(local)传送到某个IP地址(remote)的流量。

入站和出站则是指流量的传输方向。入站流量是指从Internet或其他公共网络流入防火墙所在的网络的流量,而出站流量则是指从防火墙所在的网络流向Internet或其他公共网络的流量。因此,在防火墙规则中,入站和出站可以用来指定流量的传输方向,而remote和local则可用来指定数据流量的来源或目的地。

提问:请问以下我的理解正确吗:

ios粘贴板快捷指令 –>

–> 发送网络包到我的pc ip:8063端口

–> online-clipboard.exe在监听所有发送至8063端口的请求,于是它接收到这个包请求

–> 防火墙自动询问是否允许来自内网ip 192.xx :xx端口的请求,如果允许,则完成一个tcp握手(比如请求内容是复制或粘贴)。

–> 一个入站的防火墙日志如上,local是本机内网ip:8063,remote是手机内网ip:某端口。

GPT回答:

您的理解很接近实际情况。iOS粘贴板快捷指令是通过发送网络请求来进行数据传输的。在该过程中,发送方会向指定的IP地址和端口发送一个网络包,该网络包包含有要粘贴到远程PC上的数据内容。

接下来,网卡将这个网络包通过局域网发送给目标IP地址和端口。如果目标端口是8063端口并且该端口已被online-clipboard.exe监听,那么此时online-clipboard.exe会接收到该网络包,并根据请求对复制或粘贴进行响应。

如果防火墙开启了入站策略,则会检测到该请求,由防火墙对请求发出的源地址进行验证,如果源地址是内网ip 192.xx :xx端口,则防火墙会自动询问是否允许该请求通过。如果允许,则完成一次TCP握手,数据就能正常传送。

最后,入站防火墙的日志记录了这一过程,并显示了本机的IP地址和端口号以及设备的IP地址和端口号。

最后,一个截图记录这次添加的规则。

Your browser is out-of-date!

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

×