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