【问题标题】:send CONNECT with User-Agent C#使用用户代理 C# 发送 CONNECT
【发布时间】:2016-11-25 12:58:45
【问题描述】:

我正在尝试自动化拒绝连接的 WebSocket 服务,除非您使用 CONNECT 请求发送用户代理。

我尝试使用 HttpWebRequest 发送升级请求并使用该属性设置 User-Agent。

使用 Fiddler 调试发出的请求:

CONNECT *.*.com:443 HTTP/1.1
Host: *.*.com:443
Connection: keep-alive

如何将 User-Agent 字符串添加到 CONNECT 请求,然后升级为使用 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;
}

【问题讨论】:

    标签: c# https websocket


    【解决方案1】:

    您不能使用WebRequest 创建 websocket 连接。您将需要ClientWebSocket 并使用`ClientWebSocket.Options.SetRequestHeader

    注意,添加该标头时您可能会遇到问题:Setting "User-Agent" HTTP header in ClientWebSocket

    更新:由于您无法使用ClientWebSocket 添加该标题,请尝试使用Websocket4Net

    【讨论】:

    • 查看了该解决方案,但它没有将用户代理添加到连接请求中
    • 我用 WebSocket4Net 示例的链接更新了帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2011-08-23
    相关资源
    最近更新 更多