与用户代理C#发送连接



我正在尝试自动化一个拒绝连接的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。

最新更新