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

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

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

就用这个例子测试:

提示词很简单:

用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

分享给朋友:

相关文章

小米14 Pro和Redmi K70Pro怎么选?

小米14 Pro和Redmi K70Pro怎么选?

两款手机都使用了最新的骁龙8Gen3旗舰芯片,性能都是顶级,但是两款手机定位不同,卖点不同,红米K70 Pro定位主打性能的旗舰入门手机,小米14Pro定位旗舰中高端手机。具体根据个人需求与预算来选择:两款手机的相同、相似点:都使用了骁龙8...

自媒体如何快速起步?

自媒体如何快速起步?

有两种经验,可供参考。第一种是:现象级的爆火、爆款,这种情况捞到钱,实现财务自由的人并不多,但确实存在。只不过非要说清楚为什么这个账号可以火、可以短时间内赚到普通人一辈子赚不到的钱,他们自己也不一定能说清楚,因为赶上了风口(内外部情况)。举...

你为什么讨厌抖音?

我就被抖音毁了。现在被我媳妇从抖音里拯救出来了。我为什么会这样说?我媳妇硕士在读,我文化程度相对就比较低了。大多数人看抖音其实就是为了一图一乐呵刚开始我也是这样的,我是2017年在朋友的推荐下注册了抖音,刚开始那时候对抖音不太上瘾,一周也就...

为什么闲鱼越做越差?

理想的闲鱼:卖家视角:4000块钱买的手机,用了半年不想用了,挂一个3000块,和买家一顿交流,最后2500块成交,我得到了回血,买家得到了便宜;买家视角:想用一台4000块的手机,但是手里只有2500块,来到闲鱼和卖家一顿交流,最后250...

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

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

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

如何看待腾讯帕鲁新游《酷比大陆》?

如何看待腾讯帕鲁新游《酷比大陆》?

「缸脑研究」第16期概述11月15日,类帕鲁手游《酷比大陆》开启了限量删档测试(未开放付费)。作为一直在关注此类游戏的玩家,脑斯基也是第一时间进入了游戏。遂有了这篇敏捷评测。在《酷比大陆》中,帕鲁的名字叫「奇兽」,不过文中我们将使用更通用的...

发表评论

访客

看不清,换一张

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