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

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

卡卷网1年前 (2025-01-14)每日看点189

就用这个例子测试:

提示词很简单:

用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

分享给朋友:

相关文章

天涯论坛关闭后,除了知乎,大家都在逛什么?

天涯论坛关闭后,除了知乎,大家都在逛什么?

天涯神贴合集完整版,给大家整理好了!那年大学,打开天涯,感觉打开了一片新天地,里面什么样的人都有,有大神也有蛇神,比某乎好太多了,可惜后面关了很多年前,天涯社区曾出现了不少深受欢迎的帖子,成功地预言了许多形势和事件。这些帖子因此被冠以“天涯...

有哪些是你用上了mac才知道的事?

用上了高端的Mac(已退货)才知道:原来文件夹里面的文件,你看到是8个,其实可能有12个。其中3个图标重叠在一起了,另外一个被拖动到屏幕外面了。用上了高端的Mac(已退货)才知道:原来鼠标灵敏度有问题是因为系统内置了鼠标加速度,只能用控制台...

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

相信很多接触过286的90后朋友都和我有一样的体会,以前的机械键盘真的是让人头皮发麻,不仅敲击要非常用力,而且很吵。所以后面随着大家的生活消费水平的上升,家家户户都有电脑了,自然也不想再用打字来宣扬自己有电脑的优越感,基本上大家都换成了又轻...

常微分方程的理论对偏微分方程的研究有没有帮助?

常微分方程的理论对偏微分方程的研究有没有帮助?

之前看到过一句话,好像是 Bourgain 说的,大意是做 ode 的做到深处就到了 pde,做 pde 的做到深处就到了 ode,ode 和 pde 最后是相通的。以我目前有限的知识,只知道下面两个方向:1. Hamilton 系统在现代...

为什么张雪峰什么专业都懂?

他不懂专业,他懂的是就业。我记得有个老哥,家里条件不好,母亲吸血。想脱离家庭张雪峰眼睛一亮就说这是个学土木的好苗子。作为土木人我可知道他说的太对了,这种人学土木毕业进中建中铁,直接给你拉非洲看大鳄鱼呲牙。工资不低还能脱离家庭,可不是个学土木...

微信占用存储空间很大,如何解决?

微信占用存储空间很大,如何解决?

微信用久了,越来越占内存怎么办?确实如此,微信使用时间久了,如果不定期清理数据的话,就会占用特别多的内存,几G甚至几十G。你是不是也正在为这种事情而头痛?碰到这种情况,除了卸载重装微信以外,我们可以通过下面几种方法来释放内存。方法一:删除应...

发表评论

访客

看不清,换一张

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