繁体   English   中英

袜子4绑定在php示例中

[英]Socks 4 bind in php example

<?php

error_reporting(E_ALL);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false)
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";

$result = socket_connect($socket, "92.51.77.126", 1080); // socks ip

if ($result === false)
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";

$in  = "\x04\x02";
$in .= "\x00\x50";  // http proxy port
$in .= "\xc0\xf0\x2e\x7e";  // http proxy ip address
$in .= "\x00";

socket_write($socket, $in, strlen($in));

sleep(1);

$in  = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";

socket_write($socket, $in, strlen($in));

$out = '';
while ($out = socket_read($socket, 2048)) {
    echo $out;
}

socket_close($socket);

?>

我想绑定一个socks 4代理服务器来连接另一个代理。 此示例secound代理是http代理。 当第一个连接正常连接时,服务器答案已被授予,但此时的通信已完成。 这个例子如何继续沟通?

您很幸运收到了“已授予”回复-我在OpenSSH中没有收到来自SOCKS服务器的任何回复,它只是关闭了连接...

据我了解的SOCKS4描述,类型2(BIND)请求的答案包含一个端口号和一个IP地址。 当连接到达他们时,您的程序将能够读取下一个状态数据包,该数据包告诉您有关连接的信息。 等待连接的时间有限(似乎为2分钟)。 这主要用于FTP客户端-FTP服务器需要与客户端的反向连接,而BIND允许通过连接。

如果要从侧面发起连接,请使用类型1(CONNECT)请求。 另外,请确保请求中的端口和IP地址正确-在您的代码中看起来是80和192.240.30.126。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM