$remoteConnection = new AsyncTcpConnection("tcp://{$addr}");
$remoteConnection->proxySocks5 = "lanlon666:lanlon666@127.0.0.1:1111"; // 自己设置的这个格式可以自己修改
需要改动 AsyncTcpConnection.php 文件两处地方:
if ($this->proxySocks5) {
if(strpos($this->proxySocks5, '@') !== false && strpos($this->proxySocks5, ':') !== false){
$pa = explode('@', $this->proxySocks5);
$up = explode(':', $pa[0]);
$this->proxySocks5 = $pa[1];
$this->socketContext['ssl']['socks5_username'] = $up[0];
$this->socketContext['ssl']['socks5_password'] = $up[1];
}
var_dump('设置 proxySocks5 > ' . $this->proxySocks5 . '>peer_name = ' . $this->remoteHost);
$this->socketContext['ssl']['peer_name'] = $this->remoteHost;
$context = stream_context_create($this->socketContext);
$this->socket = stream_socket_client("tcp://$this->proxySocks5", $errno, $err_str, 0, STREAM_CLIENT_ASYNC_CONNECT, $context);
}
跟
// Proxy
if ($this->proxySocks5 && $address === $this->proxySocks5) {
// 如果带有账户跟密码
if(isset($this->socketContext['ssl']['socks5_username']) && isset($this->socketContext['ssl']['socks5_password'])){
var_dump('socks5 开始认证 > ' . $this->socketContext['ssl']['socks5_username'] . ' ' . $this->socketContext['ssl']['socks5_password']);
fwrite($this->socket, chr(5) . chr(2) . chr(0) . chr(2));
$res = fread($this->socket, 512);
var_dump('socks5 认证结果 > ' . bin2hex($res));
fwrite($this->socket, chr(1) . chr(strlen($this->socketContext['ssl']['socks5_username'])) . $this->socketContext['ssl']['socks5_username'] . chr(strlen($this->socketContext['ssl']['socks5_password'])) . $this->socketContext['ssl']['socks5_password']);
$res = fread($this->socket, 512);
var_dump('socks5 认证结果2 > ' . bin2hex($res));
fwrite($this->socket, chr(5) . chr(1) . chr(0) . chr(3) . chr(strlen($this->remoteHost)) . $this->remoteHost . pack("n", $this->remotePort));
fread($this->socket, 512);
}else {
fwrite($this->socket, chr(5) . chr(1) . chr(0));
fread($this->socket, 512);
fwrite($this->socket, chr(5) . chr(1) . chr(0) . chr(3) . chr(strlen($this->remoteHost)) . $this->remoteHost . pack("n", $this->remotePort));
fread($this->socket, 512);
}
}
老大可以做一个统一格式,方便后续更新啥的。