Javascript Websocket连接-没有有效凭据

Javascript Websocket连接-没有有效凭据,javascript,node.js,websocket,Javascript,Node.js,Websocket,我正在尝试创建一个简单的nodejs应用程序,它连接到pathofexile.com/trade api 这个API的问题是,除非您登录到主网站,否则无法使用它(我的代码在浏览器中工作,但我正在尝试将其变成桌面应用程序)。还有其他几个应用程序通过使用用户会话ID(您可以通过登录网站获得的ID)创建会话ID cookie来解决此问题。不幸的是,API的文档非常有限,我无法找到任何关于如何根据需要创建/使用cookie的信息 如果我尝试连接到websocket,但未登录到PathFexile主网站,

我正在尝试创建一个简单的nodejs应用程序,它连接到pathofexile.com/trade api

这个API的问题是,除非您登录到主网站,否则无法使用它(我的代码在浏览器中工作,但我正在尝试将其变成桌面应用程序)。还有其他几个应用程序通过使用用户会话ID(您可以通过登录网站获得的ID)创建会话ID cookie来解决此问题。不幸的是,API的文档非常有限,我无法找到任何关于如何根据需要创建/使用cookie的信息

如果我尝试连接到websocket,但未登录到PathFexile主网站,则会出现以下错误:

VM58:1 WebSocket connection to 'wss://www.pathofexile.com/api/trade/live/Metamorph/e602K4cL' failed: HTTP Authentication failed; no valid credentials available
我已经尝试使用我的sessionID通过使用节点中的内置功能创建这样的cookie:

const cookie = { name: 'POESESSID', value: '3acbf42fb842aasdqwe1a0c355f',domain: 
'.pathofexile.com' }
  session.defaultSession.cookies.set(cookie)
.then(() => {
// success
  console.log("Cookie set (?)")
}, (error) => {
  console.error(error)
})
不幸的是,这不起作用。我对WebSocket非常不熟悉(只是在几天前偶然开始玩这些东西),而且我对WebSocket如何从Cookie中访问和获取数据更不熟悉

我尝试过其他模块,如npm cookie解析器、npm请求和npm指针,但都没有成功

我得到的最接近答案来自一个一年前的reddit帖子,用户使用C#来实现这一点

这是该示例中使用的代码:

// Setup HTTP connection
HttpClientHandler handler = new HttpClientHandler();
CookieContainer cookieContainer = new CookieContainer();
cookieContainer.Add(composeUrl, new Cookie("POESESSID", sessionId));
handler.CookieContainer = cookieContainer;

HttpClient client = new HttpClient(handler);
如果有人能帮我解释一下,我会非常感激的。我知道这个问题非常合适,也许我问错了论坛,但我真的不知道该转向哪里

谢谢你的帮助!
//Alex

您必须检查浏览器应用程序用于跟踪身份验证的内容,然后您必须在桌面应用程序中模拟这种情况,可能是通过使用适当的http post登录到站点并保留从该站点返回的凭据(无论它们是如何完成的)。我不确定这意味着什么。我让它工作的唯一方法是,在不登录的情况下,在chrome应用程序选项卡中手动添加cookie。完成后,它至少会在该会话中起作用。我想我需要一种方法来创建这样一个cookie:poesessiond=[MYSESSIONID],它需要将其域设置为“.pathofexile.com”。谢谢你的回复!如果你对我如何跟踪认证有任何进一步的建议,那就太棒了!你说过它可以在浏览器中工作。因此,您必须对其在浏览器中的工作方式进行反向工程。在Chrome调试器的“网络”选项卡中检查登录请求。准确地查看在什么类型的请求上发送的内容以及它返回的内容。检查webSocket连接请求并查看随请求一起发送的内容。然后,您必须在桌面应用程序中执行这两个操作。您必须登录,获取从中返回的凭据(可能是cookie),并将cookie与您的webSocket连接一起使用。这是逆向工程。对不起,我不小心按了enter键,以为它会给我一个换行符!我试着在chrome中查看“网络”选项卡,但根本找不到模式。这是一个屏幕截图:左边是我未登录时的截图,右边是我登录时的截图。我不知道我在看什么,或者说实话,呵呵..还有,忘了提到sessionid实际上持续了整整一个月。所以这不是我需要的东西,我已经有了身份证。所以我假设我唯一需要的就是在打开websocket之前创建cookie。