php - socks代理

时间:2010-08-31 16:10:49

标签: php proxy socks

在过去的十五天里,我突然想要解决这个问题。我有一个连接到远程mysql服务器的PHP应用程序,但是应用程序无法直接访问远程mysql服务器,它必须通过socks代理连接。请任何人帮我解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:2)

我当时想看看是否还有其他人这样做过,但我猜不是。我为SOCKS4a创建了一个PHP接口。在这里。

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相同类型的套接字

答案 1 :(得分:0)

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