这是我参与「第五届青训营 」笔记创作活动的第2天。
本文重点内容
- 用
Go实现在线词典 - 用
Go实现SOCKS5代理
实践内容详解
用Go实现在线词典
巧用代码生成
用Go模拟Curl
从 Edge 浏览器的开发人员选项中复制 Curl 代码
curl自动生成工具
利用此工具生成Go代码
Convert curl commands to code (curlconverter.com)
这个网址不仅支持Go的生成,还支持多种其他语言。
请求代码结构
程序整体分为:创建请求、设置请求头、发起请求、读取响应四个部分。
这里,主要涉及到net/http的使用。
Go语言内置的net/http包提供了HTTP客户端和服务端的实现。众所周知,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络传输协议。在此包中的Get、Head、Post和PostForm函数发出HTTP/HTTPS请求。程序在使用完response后必须关闭回复的主体,可以用到defer。
进一步优化代码的过程中,涉及到对返回的Json解析。老师讲到出于性能考虑,优先考虑解构Json到结构体。但Json返回的结构往往比较复杂,可以利用下面的工具,把一个Json转化为这类Json通用的结构体。
JSON转Golang Struct - 在线工具 - OKTools
这个工具还提供一些Json转化为其他格式的功能。
用Go实现SOCKS5代理
这个项目使用到 netcat,windows版下载地址:netcat 1.11 for Win32/Win64 (eternallybored.org)
| Netcat是一个特色的网络实用程序,可以读取和写入数据 网络连接,使用 TCP/IP 协议。 它被设计为一个可靠的“后端”工具,可以直接使用或由其他程序和脚本轻松驱动。同时,它是一个功能丰富的网络调试和探索工具,因为它可以创建 几乎您需要的任何类型的连接,并且有几个有趣的 内置功能。 |
|---|
建立TCP连接的流程
这里主要涉及到 net。 一个TCP客户端进行TCP通信的流程如下:
- 建立与服务端的链接
- 进行数据收发
- 关闭链接
SOCKS5 代理原理
- 协议版本号,认证信息(跳过)等
- 发送请求类型,连接具体信息
- 返回响应
实现完整SOCKS5 代理服务器
本文小结
- 用
Go实现在线词典 - 用
Go实现SOCKS5代理