Носки 4 связывают в примере PHP

1
<?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. Когда подключается первое, обычно подключается ответ сервера, но связь в это время завершена. Как продолжалось общение на этом примере?

Теги:
socks

1 ответ

0

Вам повезло, что вы получили ответ "Granted" - я не получаю никакого ответа от сервера SOCKS в OpenSSH, он просто закрывает соединение...

Поскольку я понимаю описание SOCKS4, ответ для запроса типа 2 (BIND) содержит номер порта и IP-адрес; когда к ним приходит соединение, ваша программа сможет прочитать следующий пакет состояния, который сообщает о соединении. Существует ограниченное время (кажется, 2 минуты) ожидания подключения. Это в основном для FTP-клиента - FTP-сервер нуждается в обратном подключении к клиенту, а BIND позволяет передавать соединение.

Если вы хотите инициировать соединение с вашей стороны, используйте запрос типа 1 (CONNECT). Кроме того, убедитесь, что порт и IP-адрес в запросе верны - кажется, в вашем коде они равны 80 и 192.240.30.126.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню