PHP套接字包数据
我想是“连接主机:端口”?有人能给我解释一下吗?当我尝试发送命令“0000001登录密码”时,imap返回错误错误语法。看来我应该打包这个命令或者类似的东西 上有SOCKS协议的概述 这是一些快速连接到SOCKS代理的脏代码PHP套接字包数据,php,sockets,imap,pack,Php,Sockets,Imap,Pack,我想是“连接主机:端口”?有人能给我解释一下吗?当我尝试发送命令“0000001登录密码”时,imap返回错误错误语法。看来我应该打包这个命令或者类似的东西 上有SOCKS协议的概述 这是一些快速连接到SOCKS代理的脏代码 fwrite($socket,pack(“C3”,0x05,0x01,0x00))表示发送字节5、1和0 在初始连接请求中,这意味着“SOCKS版本5”,支持1身份验证方法,并且一种身份验证方法是无身份验证 如果($server\u status==pack(“C2”,0x
fwrite($socket,pack(“C3”,0x05,0x01,0x00))代码>表示发送字节5、1和0
在初始连接请求中,这意味着“SOCKS版本5
”,支持1
身份验证方法,并且一种身份验证方法是无身份验证
如果($server\u status==pack(“C2”,0x05,0x00))
正在检查服务器是否响应“Socks版本5
,请使用无身份验证
”
fwrite($socket,pack(“C5”,0x05,0x01,0x00,0x03,strlen($desthost))。$desthost.pack(“n”,$port))代码>正在发送连接请求:
- 5(袜子版本5)
- 1(TCP连接请求)
- 0(保留)
- 3(使用域名)
- 域名的
长度
- 域名
- 网络字节顺序中的端口号
如果(ord($server\u buffer[0])==5和&ord($server\u buffer[1])==0和&ord($server\u buffer[2])==0)
正在检查服务器响应
- 5袜子第5版
- 已批准0个请求
- 0保留字节
有更多的字段,但它会忽略它们,并希望它们正好适合10个字节,如果它返回域地址或IPv6地址,这可能不是真的
此时,将建立到远程服务器的连接。然后,它将其升级到TLS,否则应按预期工作
对于此点之后的IMAP命令,请确保它们以“\r\n”结尾。您实际上没有为此显示代码,因此我们无法帮助调试它
SOCKS5在中正式规定。中有SOCKS协议概述
这是一些快速连接到SOCKS代理的脏代码
fwrite($socket,pack(“C3”,0x05,0x01,0x00))代码>表示发送字节5、1和0
在初始连接请求中,这意味着“SOCKS版本5
”,支持1
身份验证方法,并且一种身份验证方法是无身份验证
如果($server\u status==pack(“C2”,0x05,0x00))
正在检查服务器是否响应“Socks版本5
,请使用无身份验证
”
fwrite($socket,pack(“C5”,0x05,0x01,0x00,0x03,strlen($desthost))。$desthost.pack(“n”,$port))代码>正在发送连接请求:
- 5(袜子版本5)
- 1(TCP连接请求)
- 0(保留)
- 3(使用域名)
- 域名的
长度
- 域名
- 网络字节顺序中的端口号
如果(ord($server\u buffer[0])==5和&ord($server\u buffer[1])==0和&ord($server\u buffer[2])==0)
正在检查服务器响应
- 5袜子第5版
- 已批准0个请求
- 0保留字节
有更多的字段,但它会忽略它们,并希望它们正好适合10个字节,如果它返回域地址或IPv6地址,这可能不是真的
此时,将建立到远程服务器的连接。然后,它将其升级到TLS,否则应按预期工作
对于此点之后的IMAP命令,请确保它们以“\r\n”结尾。您实际上没有为此显示代码,因此我们无法帮助调试它
SOCKS5是在中正式指定的。它只是说,发送三个字节5、1和0,然后发送五个字节5、1、0、3,[主机长度]。它是二进制协议,任何地方都没有“连接”字。(连接由HTTP代理使用,而不是SOCKS代理)谢谢!但这些字节对代理来说意味着什么呢?如果代理受密码保护,我如何进行授权?这里有一个概述:,其中正式指定了SOCKS5,它只是说,发送三个字节5、1和0,然后发送五个字节5、1、0、3,[主机长度]。它是二进制协议,任何地方都没有“连接”字。(连接由HTTP代理使用,而不是SOCKS代理)谢谢!但这些字节对代理来说意味着什么呢?如果代理受密码保护,我该如何进行授权?这里有一个概述:,并且SOCKS5在“非常感谢”中正式指定!!让我问一下,什么是“\r\n”?发送到IMAP服务器的每个命令都必须以字符串“\r\n”结尾,例如001登录用户密码\r\n
。这是一个回车/新品组合。非常感谢!!让我问一下,什么是“\r\n”?发送到IMAP服务器的每个命令都必须以字符串“\r\n”结尾,例如001登录用户密码\r\n
。这是回车/换行组合。
<?php
$desthost = "imap.gmail.com";
$port = 993;
$conflag = STREAM_CLIENT_CONNECT;
try
{
$socket = stream_socket_client( "tcp://host:port", $errno, $errstr, 15, $conflag );
fwrite( $socket, pack( "C3", 0x05, 0x01, 0x00 ) );
$server_status = fread( $socket, 2048 );
if ( $server_status == pack( "C2", 0x05, 0x00 ) )
{
// Connection succeeded
}
else
{
die( "SOCKS Server does not support this version and/or authentication method of SOCKS.\r\n" );
}
fwrite( $socket, pack( "C5", 0x05, 0x01, 0x00, 0x03, strlen( $desthost ) ) . $desthost . pack( "n", $port ) );
$server_buffer = fread( $socket, 10 );
var_dump(unpack("C5", $server_buffer));
if ( ord( $server_buffer[0] ) == 5 && ord( $server_buffer[1] ) == 0 && ord( $server_buffer[2] ) == 0 )
{
// Connection succeeded
}
else
{
die( "The SOCKS server failed to connect to the specificed host and port. ( " . $desthost . ":" . $port . " )\r\n" );
}
stream_socket_enable_crypto( $socket, TRUE, STREAM_CRYPTO_METHOD_SSLv23_CLIENT );
}
catch ( Exception $e )
{
die( $e->getMessage() );
}
if ( $socket === FALSE )
{
die( "bad socket" );
}
//fwrite( $socket, "GET /\n" );
echo fread( $socket, 8192 );
fwrite( $socket, pack( "C5", 0x05, 0x01, 0x00, 0x03, strlen( $desthost ) ) . $desthost . pack( "n", $port ) );