diff --git a/src/main/java/tracker/DataCaptureProxy.java b/src/main/java/tracker/DataCaptureProxy.java
index c2ed137..cb66feb 100644
--- a/src/main/java/tracker/DataCaptureProxy.java
+++ b/src/main/java/tracker/DataCaptureProxy.java
@@ -6,7 +6,7 @@
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.net.URL;
-
+import tracker.Tracker;
 import org.simpleframework.http.Request;
 import org.simpleframework.http.Response;
 import org.simpleframework.http.core.Container;
@@ -34,15 +34,17 @@
             String uploaded   = req.getParameter("uploaded");
             String downloaded = req.getParameter("downloaded");
             String passkey    = req.getParameter("passkey");
+            String port       = req.getParameter("port"); // qBittorrent 服务端端口
 
-            // 获取客户端IP地址
+            // 获取客户端IP地址和端口
             String clientIp;
+            int clientPort = -1;
             // 直接从 TCP 连接（socket 源地址）中读取
             SocketAddress socketAddress = req.getClientAddress();
             if (socketAddress instanceof InetSocketAddress) {
-                clientIp = ((InetSocketAddress) socketAddress)
-                               .getAddress()
-                               .getHostAddress();
+                InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
+                clientIp = inetSocketAddress.getAddress().getHostAddress();
+                clientPort = inetSocketAddress.getPort();
             } else {
                 // 兜底写法，将整个 SocketAddress 转为字符串
                 clientIp = socketAddress.toString();
@@ -53,23 +55,25 @@
                 ", uploaded=" + uploaded +
                 ", downloaded=" + downloaded +
                 ", passkey=" + passkey +
-                ", client_ip=" + clientIp
+                ", client_ip=" + clientIp +
+                ", client_port=" + clientPort +
+                ", qbt_service_port=" + port
             );
 
             // 调用 Tracker 方法更新上传和下载数据
-            if (passkey != null && !passkey.isEmpty()) {
+            if (passkey != null && !passkey.isEmpty() && infoHash != null && !infoHash.isEmpty()) {
                 try {
                     if (uploaded != null && !uploaded.isEmpty()) {
                         int uploadValue = Integer.parseInt(uploaded);
                         if (uploadValue > 0) {
-                            tracker.AddUpLoad(passkey, uploadValue);
+                            tracker.AddUpLoad(passkey, uploadValue, infoHash);
                         }
                     }
                     
                     if (downloaded != null && !downloaded.isEmpty()) {
                         int downloadValue = Integer.parseInt(downloaded);
                         if (downloadValue > 0) {
-                            tracker.AddDownload(passkey, downloadValue);
+                            tracker.AddDownload(passkey, downloadValue, infoHash);
                         }
                     }
                 } catch (NumberFormatException e) {
