Я пытаюсь создать простое nodejs приложение, которое подключается к pathofexile.com/trade api.
Проблема с этим API заключается в том, что вы не можете использовать его, пока не вошли в систему на основном сайте (мой код работает в браузере, но я пытаюсь превратить его в настольное приложение). Существует несколько других приложений, которые решают эту проблему путем создания идентификатора сеанса cook ie с идентификатором сеанса пользователя (идентификатор, который можно получить, войдя на веб-сайт). К сожалению, документация по API очень ограничена, и я не смог найти никакой информации о том, как создать / использовать повара ie по мере необходимости.
Если я попытаюсь Чтобы подключиться к веб-сокету, не входя в систему на главном сайте pathofexile, я получаю следующую ошибку:
VM58:1 WebSocket connection to 'wss://www.pathofexile.com/api/trade/live/Metamorph/e602K4cL' failed: HTTP Authentication failed; no valid credentials available
Я пытался использовать sessionID для создания повара ie, подобного этому, используя встроенные функции в узле:
const cookie = { name: 'POESESSID', value: '3acbf42fb842aasdqwe1a0c355f',domain:
'.pathofexile.com' }
session.defaultSession.cookies.set(cookie)
.then(() => {
// success
console.log("Cookie set (?)")
}, (error) => {
console.error(error)
})
К сожалению, это не работает. Я очень незнаком с веб-сокетами (только начал играть с этим из нескольких дней go случайно), и еще менее знаком с тем, как веб-сокеты получают доступ и получают данные из файлов cookie.
Я пробовал другие модули, такие как npm cook ie -parser, npm request и npm needle безрезультатно.
Ближайший ответ, который я получил, - от одного года старый пост 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