当前位置:首页 > 每日看点 > 正文内容

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

卡卷网7个月前 (01-14)每日看点119

就用这个例子测试:

提示词很简单:

用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) } }

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/9261.html

分享给朋友:

相关文章

苹果为什么不做千元机?

苹果为什么不做千元机?

第一步,打开苹果官网,注意是.com,不是.cn;第二步,点击iPhone,选择Compare iPhone;第三步,选择最新iPhone 15系列,查看起售价格,分别为$1199,$999,$799。这不妥妥的千元机吗,怎么苹果就不做千元...

大家都是怎么把自己的粉丝增加到1000的呢?

大家都是怎么把自己的粉丝增加到1000的呢?

截至2024年10月30日,关注者总数1137人,用时80天,增速约14人/天。2024年10月30日数据2024年8月10日开始创作,连续一周,1个关注者都没有。创作第7天,得到第一个关注,7天时间,写了8篇回答。当天得到关注,激动的心情...

有哪些好玩到爆的小网站?推荐?

有哪些好玩到爆的小网站?推荐?

1、Poki 免费在线游戏https://poki.com/zh免费在线小游戏网站。上千款在线游戏,完全免费,无需登录,打开就能玩。2、http://YORG.iohttps://yorg.io超耐玩的塔防游戏。搭建自己的防御基地、开采资源...

面试官问“你的SQL能力怎么样?”时应该如何回答?

面试官问“你的SQL能力怎么样?”时应该如何回答?

如果面试时被问你SQL能力怎么样?要么是考查一下题目,怎么写SQL语句。要么是问SQL优化相关的,更容易问出一个人的水平。sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。如果某天你负责的某个线上接口,出...

离线可否搭建 GitLab 环境?

离线可否搭建 GitLab 环境?

背景:为什么要使用GitLab CI/CD?统一工作流程:GitLab CI/CD 为开发、测试和运维团队提供了一个统一的工作流程。开发人员提交代码后,测试人员可以清楚地看到代码的构建和测试情况,运维人员也可以了解软件的部署进度。例如,在一...

计算机网络的基本原理是什么?

计算机网络的基本原理是什么?

一、计算机网络概述1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构TCP/IP四层模型与OSI体系结构对比:1.3 层次结构设...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。