php - 在 websocket 中向终端创建的 codeanywhere.com 网站服务器发送 bash 命令
问题描述
我想连接到https://codeanywhere.com/网站的 websocket,并向终端创建的服务器发送 bash 命令。
我通过检查 chrome 找到 url,如下所示:
wss://terminal.codeanywhere.com/socket.io/?token=a2dc3aaf74fd86450403a32f14134841fb5a32a2c3e38eb8&tabId=2233322-ae3c7ce8-17df-46c9-bf7b-22895ba7b6b7&connectionId=2233322&path=&EIO=3&transport=websocket&sid=zH9jTMre4I-HK4E8IyJY
并编写以下代码:
<?php
require __DIR__ . '/vendor/autoload.php';
$url = 'wss://terminal.codeanywhere.com/socket.io/?token=a2dc3aaf74fd86450403a32f14134841fb5a32a2c3e38eb8&tabId=2233322-ae3c7ce8-17df-46c9-bf7b-22895ba7b6b7&connectionId=2233322&path=&EIO=3&transport=websocket&sid=zH9jTMre4I-HK4E8IyJY';
$headers = [
'Host' => 'terminal.codeanywhere.com',
'Connection' => 'Upgrade',
'Pragma' => 'no-cache',
'Cache-Control' => 'no-cache',
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
'Upgrade' => 'websocket',
'Origin' => 'https://codeanywhere.com',
'Sec-WebSocket-Version' => '13',
'Accept-Encoding' => 'gzip, deflate, br',
'Accept-Language' => 'en-US,en;q=0.9,fa;q=0.8',
'Sec-WebSocket-Key' => 'Ge/uFr0UjX62X84vbsE/Ww==',
'Sec-WebSocket-Extensions' => 'permessage-deflate; client_max_window_bits',
];
$loop = React\EventLoop\Factory::create();
$reactConnector = new \React\Socket\Connector($loop);
$connector = new Ratchet\Client\Connector($loop, $reactConnector);
$connector($url, [], $headers)
->then(function(Ratchet\Client\WebSocket $conn) {
$conn->on('error', function($error) {
echo "Ratchet Pawl error ({$error})\n";
});
$conn->on('message', function(\Ratchet\RFC6455\Messaging\MessageInterface $msg) use ($conn) {
echo "Received: {$msg}\n";
//$conn->close();
});
$conn->on('open', function() {
echo "Connection opened\n";
});
$conn->on('close', function($code = null, $reason = null) {
echo "Connection closed ({$code} - {$reason})\n";
});
//$conn->send('42["data","ls\r"]');
$conn->send('2probe');
}, function(\Exception $e) use ($loop) {
echo "Could not connect: {$e->getMessage()}\n";
$loop->stop();
});
$loop->run();
但我只是收到此错误消息:
Connection closed (1000 - )
有什么问题,你的解决方案是什么?
解决方案
推荐阅读
- javascript - 是否可以使用 Cordova InAppBrowser 插件在位置栏上显示证书信息?
- c++ - 如何调用从 C++ 导入的包中定义的 julia 方法?
- c++ - YAML::LoadFile(std::string const&) 找不到文件 [ROS 中的 yaml-cpp]
- html - 如何从数据库中获取数据到文本框打字稿
- sqlite - React Native - SQLite 找不到预填充的数据库文件
- sql-server - 相关的多个更新语句中的死锁
- r - 在不使用 Docker 的情况下,无法在 R 中使用 RSelenium 包打开 Gecko 驱动程序
- swift - 在 awakeFromNib 触发之前设置属性
- amazon-web-services - AWS 登陆区 - 访问核心账户?
- laravel - 当 Laravel Passport 重定向 URL 指向 Chrome 扩展时,ERR_UNSAFE_REDIRECT