postuf/socks-proxy-async

轻量级 PHP 异步 socks 代理

v0.3.1 2022-01-13 10:51 UTC

README

异步 SOCKS5 客户端库

Gitpod ready-to-code

codecov

要求

  • PHP 7.4+
  • Composer
    • ext-sockets

快速开始

首先,将库添加到您的应用用户 composer

composer require postuf/socks-proxy-async

工作原理

假设,您有一个套接字和一个事件循环

$socket = new SocketAsync(/* ... */);
while(true) {
  // process events
  if (!$socket->ready()) {
    $socket->poll();
  } else {
    // your logic ...
  }
}

我们创建套接字,设置 socket_set_nonblock,当套接字连接时,isReady 标志被设置。内部逻辑以状态机形式组织。您可以扩展它并添加更多步骤,这样在事件循环中就只需调用 $socket->poll(),然后您只需检查状态并处理接收到的更新。

测试

测试需要可工作的代理和 http 服务器运行,使用 node/proxy.js 启动代理,使用 node/http/start.sh (./start.sh 在其子目录中) 启动 http 服务器。默认情况下,http 服务器在端口 8080 上运行,代理占用端口 1080,测试使用这些端口。

与 DNS 相关的测试需要 DNS 服务器 (node/named.js) 运行。

构建命令

  • make all - 运行所有检查

  • make test - 运行测试

  • make cs - 运行 codesniffer 检查

  • make psalm - 运行 psalm 检查

  • make stan - 运行 stan 检查

  • make cs - 运行 stan 和 psalm 检查

  • make get-security - 获取安全检查器

  • make security - 运行安全检查器