有些人可能已经知道我的工具byp4xx,这是一个简单的脚本,可以绕过使用不同方法的40X/HTTP响应。它开始是一个使用cUrl的简单bash脚本,但在某种程度上,我决定转向Python。

这只是我个人的一个挑战,我从来没有用Python写过任何东西,它根本不需要,因为它仍然严重依赖cUrl,所以我不会从中获得任何优势。python代码完成后,我想实现的几个功能仍在进行几个月:文件作为输入和多线程。

我刚刚查看了几篇关于如何在Python中实现多线程的文章,但即使是最简单的示例乍一看也不是很直观,所以这些特性暂时还没有出现。

但后来,有一天,ChatGPT出现了。和你们大多数人一样,我花了几个小时测试这个新的野兽,挑战它,它给人留下了深刻的印象了解了它的能力,它可以帮助我增加其余的功能,但它们并不是我唯一的积压任务。一段时间以来,我想学习Golang,但我一直没有找到时间。以传统的方式开始学习一门新的编程语言可能会很枯燥:数据类型、如何定义变量、如何声明条件、运算符、循环......很好理解,但如果你之前有一些其他语言的背景,那么你肯定可以面对新的语法。这是一个一石二鸟的好机会:学习Go,并将byp4xx转移到它实现那些剩余的功能。

ChatGPT,帮我吧

方法很简单:将我的Python代码分割成片,并要求ChatGPT来解决这些小问题。

第一次查询:

http://https://options

这条简单的语句所提供的代码相当不错,让我看到了Golang的一些基础知识:

:==fmt.Println()net/http

我不想使用net/http,我仍然需要依靠cUrl,只是在任何情况下,一些用户想设置超时、自定义头信息、mTLS、代理或者其他任何可能难以用这个库实现的东西。

我继续聊天,明确要求避免使用net/http和使用cUrl。这就从导入列表中删除了该库,并添加了os/exec. 现在,继续将cUrl的调用设置为一个函数:

curl_code_responsemain()

很好!现在我有了用自然语言声明的cUrl函数,我可以看到函数和参数是如何在Go中声明的。现在ChatGPT添加一些颜色。

现在根据返回代码添加颜色:如果响应代码是200,则为绿色;如果是30X,则为橙色;其余的http响应为红色。

得到了我喜欢的颜色的结果!让我们尝试添加一些新的功能......

http://https://http://https://curl_code_response

当然,这是有效的,现在我已经学会了如何读取文件和for循环!

从这里开始,我有了最小的结构来重现与Python中相同的代码,我只是对ChatGPT提供的代码中的一些小错误进行了微调。而且,我对围棋的基础知识已经很有信心了,而这只是几个小时的事情。导入相同的cUrl请求需要一些时间,但这是简单的部分。

从现在开始,事情变得复杂起来。

ChatGPT,请做你的工作!

n

https://www.sangniao.com/

  • 我需要用不同的值调用相同的函数。

  • 最终,这些值不能添加到单词列表中,必须在代码中设置。

  • cUrl函数的调用量不是一个固定值,所以我不能为WaitingGroup设置一个固定值。

  • 只使用goroutines将我的工具变成一个潜在的DoS工具。

  • Goroutines以光速工作,需要添加信号量。

    桑鸟sangniao.com

  • 再次,我需要限制信号量的大小,我不想硬编码它。

我已经试着尽可能具体和详细地为ChatGPT带来所有这些上下文和我想要实现的特性的每个细节,但很快我意识到我已经达到了ChatGPT对复杂和自定义任务的理解的极限,所以是时候从OpenAI转换到HumanI(人类智能)了。

ChatGPT,我信任你,但你不再为我服务了!

所以基本上,在那个时候ChatGPT是没用的。我已经掌握了围棋的基本知识,所以我只需要转向一个更高级的主题,比如多线程。只是简单描述一下我所学到的:

wg.Add(X)wg.Done()wg.Wait()

因此,正如你可能会想的那样,在一个多变的环境中处理所有这些部件,以及数量多变的goroutine,对一个新人来说并不容易。此外,正如我所说,goroutines以光速工作,因此等待组不足以限制goroutines的工作负载。在这一点上,我发现semaphores,基本上是一个队列,以及它们如何帮助我保护这些线程。

几个小时后,我以一种有用的方式实现了带信号量的goroutines,为byp4xx添加了强大而危险的多线程特性,并有机会控制请求的速率限制。

结论

当然,你不会在byp4xx中找到最美观、最精致的Go代码。我可以写代码,但我不认为自己是程序员,因为我从来没有在那个角色上工作过。但对我来说,非常令人印象深刻的是,在ChatGPT的帮助下,我在几天内就用一种新的语言写了一些函数式的东西,而我甚至连一个简单的"Hello World!"都写不出来。最后,这是重点:我想强调的不仅是ChatGPT本身的可能性,而且是如果我们知道如何利用它,它将为我们带来提高技能和知识的机会。


本文标题:在3天内学习Golang在ChatGPT的使用从0到多线程