php - 袜子代理

Posted

技术标签:

【中文标题】php - 袜子代理【英文标题】:php - socks proxy 【发布时间】:2010-08-31 16:10:49 【问题描述】:

在过去的十五天里,我一直在努力解决这个问题。我有一个连接到远程 mysql 服务器的 php 应用程序,但该应用程序不能直接访问远程 mysql 服务器,它必须通过 socks 代理连接。请谁能帮我解决这个问题。

提前致谢。

【问题讨论】:

你用的是哪个mysql包pdo_mysql,mysqli,mysql 我正在使用 PDO,我也可以使用其他人。 【参考方案1】:

我想看看其他人是否已经这样做了,但我想没有。我为 PHP 制作了一个到 SOCKS4a 的接口。在这里。

function fsocks4asockopen($proxyHostname, $proxyPort, $targetHostname, $targetPort)

    $sock = fsockopen($proxyHostname, $proxyPort);
    if($sock === false)
        return false;
    fwrite($sock, pack("CCnCCCCC", 0x04, 0x01, $targetPort, 0x00, 0x00, 0x00, 0x01, 0x00).$targetHostname.pack("C", 0x00));
    $response = fread($sock, 16);
    $values = unpack("xnull/Cret/nport/Nip", $response);
    if($values["ret"] == 0x5a) return $sock;
    else
    
        fclose(sock);
        return false;
    

它不完全是任何类型的最终产品,但它允许您从 PHP 中打开与 socks4a 代理的连接,并返回与 fsockopen 相同类型的套接字

【讨论】:

【参考方案2】:

我认为您需要通过 SOCKS 代理设置端口转发。使用它,您可以打开一个本地端口(例如在 3306 上),该端口通过 SOCKS 代理将连接转发到远程主机和端口(数据库主机:3306)。您在后台运行它并使 PHP 连接到 localhost:3306(然后将其转发/隧道到 databasehost:3306)

【讨论】:

怎么做?请问你能帮帮我吗? 如果您可以建立与该机器的 SSH 连接并让 SSH 转发端口,这将更容易(也更安全)。这对你来说是一个选择吗? 我可以访问 mysql 服务器,但我无法 ssh 进入该服务器。 嗯,除了普通的旧 SSH 来创建(安全)隧道之外,我并不真正熟悉其他工具,但我想你可以尝试这里描述的内容:blog.kagesenshi.org/2006/02/…我不确定谁拥有此代理以及您正在通过哪种网络执行此操作,但请注意您的连接不安全。因此,可能会拦截包括您的 mysql 登录凭据在内的数据。

以上是关于php - 袜子代理的主要内容,如果未能解决你的问题,请参考以下文章

mysql代理袜子

袜子上的 Python ssh 客户端(代理)

sh 镀铬袜子代理

如何在应用程序中访问代理详细信息(袜子和 http)?

如何在命令行中使用带有 gradle 的袜子来解决依赖关系?

如何链接 SOCKS 代理?