javascript NodeJS -登录问题(会话、Cookie、Axios)

kfgdxczn  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(163)

我正试图教育自己在NodeJS位和工作的代码登录:https://www.jappy.de/.
成功读取loginTS和loginKey。
不知何故,我没有得到登录虽然.我也尝试玩饼干罐左右,但似乎这不是问题(因为我已经通过与凭据:正确)
谁能给我点提示出什么问题了?
这是我的代码:

import {
  AxiosInstance,
  AxiosResponse
} from "axios";
const axios = require("axios").default;
const url = require("url");

const sessionPatterns: Record < string, RegExp > = {
  loginTsPattern: /login\[ts\]" value="(.+?)"/g,
  loginKeyPattern: /login\[key\]" value="(.+?)"/g,
};
const ApiFetcher: AxiosInstance = axios.create({
  withCredentials: true,
  headers: {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
  },
});

export const login = async(req: any, res: {
  send: (data: any) => void
}) => {
  const {
    acc,
    pass
  } = req.body;
  const {
    loginTsPattern,
    loginKeyPattern
  } = sessionPatterns;
  const sessionKeyResponse: AxiosResponse | undefined =
    await ApiFetcher ? .request({
      method: "GET",
      url: "https://www.jappy.com/login",
      withCredentials: true,
    });
  const sessionKeyData = sessionKeyResponse ? .data;
  const loginTs: string | undefined = loginTsPattern.exec(sessionKeyData) ? .[1];
  const loginKey: string | undefined =
    loginKeyPattern.exec(sessionKeyData) ? .[1];
  console.log(">> loginTS", loginTs);
  console.log(">> loginKey", loginKey);

  if (!loginTs ? .length || !loginKey ? .length) {
    res.send({});
    return;
  }

  const params = new url.URLSearchParams({
    "login[ts]": loginTs,
    "login[key]": loginKey,
    source: "/password",
    "login[u]": acc,
    "login[p]": pass,
    submit: "Einloggen",
    enableAutologin: 1
  });

  const loginResponse: AxiosResponse = await ApiFetcher.request({
    method: "POST",
    url: "https://www.jappy.com/login",
    data: params.toString(),
    withCredentials: true,
  });
  const loginData = loginResponse?.data;

  res.send(`login response: ${loginData}`);
};
cbjzeqam

cbjzeqam1#

有几个因素可能会导致您的登录功能出现问题。以下是您可以尝试的几个因素:
1.确保在请求主体中传递的凭据(acc和pass)是正确的。
1.仔细检查是否从会话密钥响应中正确提取了loginTs和loginKey值。
1.在对登录端点的第二个请求中,确保Content-Type标头设置为application/x-www-form-urlencoded。这是必要的,因为您要将请求正文中的数据作为URL编码的表单参数发送。
1.在第二个请求中,您使用data属性发送请求正文,但您应该使用params属性,因为您将数据作为表单参数而不是JSON发送。
1.如果问题仍然存在,您可以尝试在浏览器的开发者工具中检查网络流量,以查看请求和响应的外观。这可能会为您提供一些有关可能出现问题的线索。

相关问题