卡卷网
当前位置:卡卷网 / 每日看点 / 正文

deepseek V3 的代码能力是行业 top1 吗?

作者:卡卷网发布时间:2025-01-14 20:20浏览数量:74次评论数量:0次

就用这个例子测试:

提示词很简单:

用golang实现一个鲁棒的基于SSH tunnel的SOCKS5代理客户端,类似ssh -D 1080 user@192.168.0.103的功能

DeepSeek V3 生成代码,没有多余的提示,V2.5版本还是需要多交流几次的。

的确是要比V2.5进步一点的,V2.5看我之前的文章Void Echo:测试AI编程能力一个例子 ,中间交互比V3的多。

package main import ( "bytes" "fmt" "io" "log" "net" "os" "sync" "golang.org/x/crypto/ssh" ) var ( sshClient *ssh.Client sshConfig *ssh.ClientConfig ) func main() { if len(os.Args) != 4 { fmt.Println("Usage: ./socks5-proxy <user> <host:port> <local-socks5-port>") return } user := os.Args[1] host := os.Args[2] localPort := os.Args[3] // SSH配置 sshConfig = &ssh.ClientConfig{ User: user, Auth: []ssh.AuthMethod{ ssh.PasswordCallback(func() (string, error) { fmt.Print("Enter SSH password: ") var password string fmt.Scanln(&password) return password, nil }), }, HostKeyCallback: ssh.InsecureIgnoreHostKey(), } // 连接到SSH服务器 var err error sshClient, err = ssh.Dial("tcp", host, sshConfig) if err != nil { log.Fatalf("Failed to dial: %s", err) } defer sshClient.Close() // 启动本地SOCKS5代理服务器 listener, err := net.Listen("tcp", ":"+localPort) if err != nil { log.Fatalf("Failed to listen on local port: %s", err) } defer listener.Close() log.Printf("SOCKS5 proxy server started on :%s\n", localPort) for { conn, err := listener.Accept() if err != nil { log.Printf("Failed to accept connection: %s", err) continue } go handleConnection(conn) } } func handleConnection(conn net.Conn) { defer conn.Close() // 读取SOCKS5握手请求 buf := make([]byte, 256) n, err := conn.Read(buf) if err != nil { log.Printf("Failed to read SOCKS5 handshake: %s", err) return } // 检查SOCKS5版本 if buf[0] != 0x05 { log.Printf("Unsupported SOCKS version: %d", buf[0]) return } // 响应SOCKS5握手 conn.Write([]byte{0x05, 0x00}) // 读取SOCKS5请求 n, err = conn.Read(buf) if err != nil { log.Printf("Failed to read SOCKS5 request: %s", err) return } // 解析SOCKS5请求 if buf[1] != 0x01 { log.Printf("Unsupported command: %d", buf[1]) return } addrType := buf[3] var host string switch addrType { case 0x01: // IPv4 host = net.IPv4(buf[4], buf[5], buf[6], buf[7]).String() case 0x03: // Domain name host = string(buf[5 : 5+int(buf[4])]) case 0x04: // IPv6 host = net.IP(buf[4:20]).String() default: log.Printf("Unsupported address type: %d", addrType) return } port := int(buf[n-2])<<8 | int(buf[n-1]) // 通过SSH隧道连接到目标主机 remoteConn, err := sshClient.Dial("tcp", fmt.Sprintf("%s:%d", host, port)) if err != nil { log.Printf("Failed to dial remote host: %s", err) return } defer remoteConn.Close() // 响应SOCKS5连接成功 conn.Write([]byte{0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) // 开始转发数据 var wg sync.WaitGroup wg.Add(2) go func() { io.Copy(remoteConn, conn) wg.Done() }() go func() { io.Copy(conn, remoteConn) wg.Done() }() wg.Wait() }

有一个语法报错

deepseek V3 的代码能力是行业 top1  吗? 第1张

手动删除掉 bytes的import 之后再运行

deepseek V3 的代码能力是行业 top1  吗? 第2张

直接可以运行,小BUG 是输入密码是明文,继续设置chrome代理

deepseek V3 的代码能力是行业 top1  吗? 第3张


切换后代理后打开页面,直接就是可用的,你可以去测试其他的大模型,包括国外的,能生成可以使用代码的他就排第二,你还要看看和他交互多少次。

补充:

刚测了kimi,改地址端口用户名,密码之类,手动修了语法错 "io"引用一下,可以执行,但是代理配置生效后,不能用。kimi生成的代码看起来有模有样,好像要实现socks5协议了,可惜不对啊。

package main import ( "log" "net" "golang.org/x/crypto/ssh" ) func main() { // SSH 服务器的地址和端口 sshAddr := "192.168.0.103:22" // SSH 用户名和密码 user := "user" password := "password" // 本地 SOCKS5 代理服务器的地址和端口 socksAddr := "127.0.0.1:1080" // 创建 SSH 客户端配置 config := &ssh.ClientConfig{ User: user, Auth: []ssh.AuthMethod{ ssh.Password(password), }, HostKeyCallback: ssh.InsecureIgnoreHostKey(), } // 连接到 SSH 服务器 sshConn, err := ssh.Dial("tcp", sshAddr, config) if err != nil { log.Fatalf("Failed to dial: %s", err) } defer sshConn.Close() // 监听本地 SOCKS5 代理端口 listener, err := net.Listen("tcp", socksAddr) if err != nil { log.Fatalf("Failed to listen: %s", err) } defer listener.Close() log.Printf("SOCKS5 proxy listening on %s", socksAddr) for { // 接受来自本地客户端的连接 localConn, err := listener.Accept() if err != nil { log.Printf("Failed to accept: %s", err) continue } go handleConnection(sshConn, localConn) } } func handleConnection(sshConn *ssh.Client, localConn net.Conn) { defer localConn.Close() // 创建 SSH 隧道 remoteConn, err := sshConn.Dial("tcp", "127.0.0.1:0") if err != nil { log.Printf("Failed to dial remote: %s", err) return } defer remoteConn.Close() // 构建 SOCKS5 响应消息,表示连接成功 socksResp := []byte{0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} if _, err := localConn.Write(socksResp); err != nil { log.Printf("Failed to write SOCKS5 response: %s", err) return } // 在本地连接和远程连接之间进行数据转发 go func() { if _, err := io.Copy(localConn, remoteConn); err != nil { log.Printf("Failed to copy from remote to local: %s", err) } }() if _, err := io.Copy(remoteConn, localConn); err != nil { log.Printf("Failed to copy from local to remote: %s", err) } }

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码