蝙蝠岛资源网 Design By www.hbtsch.com
100多行PHP代码实现socks5代理服务器,这次是使用swoole纯异步来写,使用状态机来处理数据。目前用它访问开源中国木有压力,但访问网易新闻就压力山大。我发现我用别的语言写得代理,访问网易新闻都压力大。嘎嘎,学艺不精。
对swoole理解不深,不知道怎么处理socket shutdown只关闭读/写这样,还有就是连接超时,读写超时这种怎么处理。在网上看到作者说要用定时器,感觉好麻烦,所以,这次的代理,虽然个人用,一般不会有什么问题,但离产品级的代理,还有段路要走。
如果要利用多核,就使用process模式,设置worker个数为cpu数量即可。
对swoole理解不深,不知道怎么处理socket shutdown只关闭读/写这样,还有就是连接超时,读写超时这种怎么处理。在网上看到作者说要用定时器,感觉好麻烦,所以,这次的代理,虽然个人用,一般不会有什么问题,但离产品级的代理,还有段路要走。
如果要利用多核,就使用process模式,设置worker个数为cpu数量即可。
<"\x05\x00");
$client->status = 1;
}
}
}
case 1: {
if (strlen($client->data) < 5)
break;
$request = unpack('c*', $client->data);
$aType = $request[4];
if ($aType === 0x03) { // domain
$domainLen = $request[5];
if (strlen($client->data) < 5 + $domainLen + 2) {
break;
}
$domain = substr($client->data, 5, $domainLen);
$port = unpack('n', substr($client->data, 5 + $domainLen, 2))[1];
$client->data = substr($client->data, 5 + $domainLen + 2);
} else if ($aType === 0x01) { // ipv4
$domain = long2ip(unpack('N', substr($client->data, 4, 4))[1]);
$port = unpack('n', substr($client->data, 8, 2))[1];
$client->data = substr($client->data, 10);
} else {
echo '不支持的atype:' . $aType, PHP_EOL;
$server->close($fd);
break;
}
$remote = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$remote->on('connect', function($cli) use($client, $server, $fd, $remote) {
$server->send($fd, "\x05\x00\x00\x01\x00\x00\x00\x00\x00\x00");
$client->status = 2;
$client->remote = $remote;
});
$remote->on("error", function(swoole_client $cli) use($server, $fd) {
//$server->send($fd, ""); // todo 连接不上remote
echo 'connect to remote error.', PHP_EOL;
$server->close($fd);
});
$remote->on('receive', function($cli, $data) use($server, $fd, $client) {
if (!$client->connected) {
echo 'connection has been closed.', PHP_EOL;
return;
}
$server->send($fd, $data);
});
$remote->on('close', function($cli) use($server, $fd, $client) {
$client->remote = null;
});
if ($aType === 0x03) {
swoole_async_dns_lookup($domain, function($host, $ip) use($remote, $port, $server, $fd) {
//todo 当host为空时的处理。貌似不存在的域名都解析成了本机的外网ip,奇怪
if (empty($ip) || empty($host)) {
echo "host:{$host}, ip:{$ip}\n";
$server->close($fd);
return;
}
$remote->connect($ip, $port);
});
} else {
$remote->connect($domain, $port);
}
}
case 2: {
if (strlen($client->data) === 0) {
break;
}
if ($client->remote === null) {
echo 'remote connection has been closed.', PHP_EOL;
break;
}
$sendByteCount = $client->remote->send($client->data);
if ($sendByteCount === false || $sendByteCount < strlen($client->data)) {
echo 'data length:' , strlen($client->data), ' send byte count:', $sendByteCount, PHP_EOL;
echo $client->data, PHP_EOL;
$server->close($fd);
}
$client->data = '';
}
}
}
}
(new Server())->start();
标签:
php,socks5
蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
暂无100多行PHP代码实现socks5代理服务器[2]的评论...
更新日志
2025年10月27日
2025年10月27日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]