我正在尝试自动化一个拒绝连接的Websocket服务,除非您将用户代理发送连接请求。
我尝试使用httpwebrequest发送升级请求,并使用属性设置用户代理。
使用提琴手调试请求已发送:
CONNECT *.*.com:443 HTTP/1.1
Host: *.*.com:443
Connection: keep-alive
如何将用户代理字符串添加到连接请求中,然后升级到使用WebSocket协议?
到目前为止我的代码:
public void Login ( Action onEnd = null ) {
var req = CreateUpgradeRequest();
var res = GetResponse(req);
}
private HttpWebRequest CreateUpgradeRequest ( ) {
HttpWebRequest request = WebRequest.Create("https://lobby35.runescape.com/") as HttpWebRequest;
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
request.Connection = "Upgrade";
SetWebSocketHeader(request, "Key", "5LENZfSifyj/Rw1ghTvpgw==");
SetWebSocketHeader(request, "Version", "13");
SetWebSocketHeader(request, "Extensions", "permessage-deflate; client_max_window_bits");
SetWebSocketHeader(request, "Protocol", "jagex");
return request;
}
您无法使用WebRequest
创建WebSocket连接。您将需要ClientWebSocket
并使用`clientwebsocket.options.setrequestheader。
注意,您可能有问题添加该标头:设置"用户代理"Clientwebsocket中的HTTP标头
更新:由于您无法使用 ClientWebSocket
添加该标头,然后使用WebSocket4net。