簡體   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