这是我参与「第五届青训营」笔记创作活动的第二天。
一、本堂课的重点内容
二、详细知识点如下
1、猜谜游戏
思路:
①导入相应的包;
②通过时间戳(time.Now().UnixNano())初始化随机数种子,生成随机数(否则每次生成的随机数都相同)
③读取用户输入并转为数字类型。通过bufio.NewReader(os.Stdin)和ReadString()处理输入的字符串格式;
④比较用户输入的数字和随机数的大小;
⑤用户可能多次输入,需要设置循环语句.
最终实现代码如下:
2、在线词典
原理:调用第三方api,去查询单词的意思并且打印出来——发送http请求,解析json
思路:
①通过 https://fanyi.caiyunapp.com 进行抓包
(检查->network->dict->标头->post->载荷->复制dict的内容并选择bash格式->粘贴到https://curlconverter.com/go/ ),得到request body;
②解析request body.通过https://oktools.net/json2go ->转换嵌套,得到结构体.
③打印结果,完善功能。
最终实现代码如下:
3、SOCKS5代理
1)介绍
SOCKS协议是由Internal工程工作小组开发的一套开放软件标准,用于处理网络安全问题,它就像一堵墙夹在Internal服务器和用户客户端之间,为进入企业网络的信息提供流量和安全管理。
2)原理
SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器,模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器。
当 TCP 客户端想要建立必须透过防火墙的连接时,客户端必须与合适的 SOCKS 服务建立连接。SOCKS 服务默认监听 1080 端口,如果连接成功,客户端需要与服务端协商认证方式并完成认证,之后便可以发送中继请求。SOCKS 服务端会执行请求,要么建立起合适的连接,要么拒绝请求。
3)思路
①TCP echo server
②auth-认证阶段:
第一步,客户端向代理服务器发送代理请求,其中包含了代理的版本和认证方式;
第二步,代理服务器从给定的方法列表中选择一个方法并返回选择报文;
如果 METHOD (方法)字段为 X’FF‘, 表示方法列表中的所有方法均不可用,客户端收到此信息必须关闭连接。
③请求阶段:
一旦认证方法对应的协商完成,客户端就可以发送请求细节了。
如果认证方法为了完整性或者可信性的校验,需要对后续请求报文进行封装,则后续请求报文都要按照对应规定进行封装。
SOCKS 服务端会根据请求类型和源、目标地址,执行对应操作,并且返回对应的一个或多个报文信息。
④relay阶段:
客户端与服务端建立连接并完成认证之后就会发送请求信息,服务端执行对应请求并返回如下格式的报文
4、学习建议
三、课后个人总结
听又听不懂,鞋又鞋不废,麻了。
猜谜游戏和在线词典勉强理解了,socks5只懂皮毛了,懵得很。。。呜呜,大家别骂我!