10 回复
这重定向不是你说了算的啊
没记错的话 request https://github.com/request/request 是自动跟踪重定向的。自己用 http 模块的话,可以先请求一次,如果是 302 就根据返回的 location 再请求。禁止重定向是不可能的。
重定向是 nginx 说了算
https://github.com/request/request
项目首页就有说 followRedirect 的设置,也太水了
302 证明你的模拟登录没伪装好呗
跟 nodejs 没啥关系
#5 不排除登录成功后有 302 行为
为啥要禁止重定向,就算没模拟好,禁止重定向也不解决问题。
如果成功的模拟了登录,那也得重定向才能拿到你想要的数据啊。
跟随
登录后 302 说明已经禁止重定向了
当然,以下是一个简单的 Node.js 示例,用于模拟登录功能。为了简化说明,假设我们有一个简单的 API 端点 /login
,它接受 username
和 password
字段作为 POST 请求的 body,并返回登录状态。
首先,你需要安装 axios
和 express
这两个 npm 包:
npm install axios express body-parser
然后,创建一个简单的服务器和登录模拟代码:
const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');
const app = express();
app.use(bodyParser.json());
const mockLoginEndpoint = 'https://example.com/api/login'; // 假设这是你的登录API
app.post('/login', async (req, res) => {
const { username, password } = req.body;
try {
const response = await axios.post(mockLoginEndpoint, {
username,
password
});
if (response.data.success) {
res.status(200).json({ message: 'Login successful', token: response.data.token });
} else {
res.status(401).json({ message: 'Invalid credentials' });
}
} catch (error) {
res.status(500).json({ message: 'Error during login', error: error.message });
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在这个示例中,/login
路由会处理 POST 请求,并通过 axios
将请求转发到模拟的登录 API。根据 API 的响应,它会返回相应的登录结果。请确保将 mockLoginEndpoint
替换为实际的登录 API 端点。