How do I connect to a websocket manually, with netcat/socat/telnet?

后端 未结 3 1687
情书的邮戳
情书的邮戳 2020-12-28 16:04

I am trying to connect to the reference websocket echo server \"manually\", in order to learn how the protocol works (I am using socat for that). However, the server invaria

3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-28 16:47

    Alternatively, here is a way to connect and read the stream from a wss secure websocket stream from the command line using solely core php.

    php -r '$sock=stream_socket_client("tls://echo.websocket.org:443",$e,$n,30,STREAM_CLIENT_CONNECT,stream_context_create(null));if(!$sock){echo"[$n]$e".PHP_EOL;}else{fwrite($sock,"GET / HTTP/1.1\r\nHost: echo.websocket.org\r\nAccept: */*\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ".rand(0,999)."\r\n\r\n");while(!feof($sock)){var_dump(fgets($sock,2048));}}'
    

    Other similar example, pulling from another wss server: (Do not get rekt)

    php -r '$sock=stream_socket_client("tls://stream.binance.com:9443",$e,$n,30,STREAM_CLIENT_CONNECT,stream_context_create(null));if(!$sock){echo"[$n]$e".PHP_EOL;}else{fwrite($sock,"GET /stream?streams=btcusdt@kline_1m HTTP/1.1\r\nHost: stream.binance.com:9443\r\nAccept: */*\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ".rand(0,999)."\r\n\r\n");while(!feof($sock)){var_dump(explode(",",fgets($sock,512)));}}'
    

提交回复
热议问题