node经常用到的登录和提交代码

const request = require('request');
const querystring = require('querystring');

const formData = {
  username: 'your_username',
  password: 'your_password',
  // 其他需要提交的表单数据
};

const options = {
  url: 'https://example.com/signin',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  form: formData
};

request(options, (error, response, body) => {
  if (error) {
    console.error(error);
  } else {
    console.log(body);
  }
});

有的时候,我们通过登录把cookie存储起来

当然可以使用 cookie 实现自动登录,下面是一个使用 Node.js 实现自动登录的示例代码,使用了 `request` 模块发送 HTTP 请求,可以将 cookie 保存在本地文件中,以便下次使用:

```javascript
const request = require('request');
const fs = require('fs');
const querystring = require('querystring');

// 登录页面 URL
const loginUrl = 'https://example.com/login';
// 登录表单数据
const formData = {
  username: 'your_username',
  password: 'your_password',
};

// 读取保存的 cookie
let cookie = '';
try {
  cookie = fs.readFileSync('cookie.txt', 'utf-8');
} catch (err) {
  console.error('读取 cookie 失败', err);
}

// 如果没有保存的 cookie,则进行登录操作
if (!cookie) {
  // 发送登录请求
  request.post({
    url: loginUrl,
    form: formData,
  }, (err, response, body) => {
    if (err) {
      console.error('登录失败', err);
      return;
    }

    // 保存 cookie
    const headers = response.headers;
    if (headers['set-cookie']) {
      cookie = headers['set-cookie'][0];
      fs.writeFileSync('cookie.txt', cookie);
      console.log('保存 cookie 成功', cookie);
    }

    // 打印登录结果
    console.log('登录成功', body);
  });
} else {
  // 如果有保存的 cookie,则直接使用 cookie 访问需要登录才能访问的页面
  request.get({
    url: 'https://example.com/protected_page',
    headers: {
      Cookie: cookie,
    },
  }, (err, response, body) => {
    if (err) {
      console.error('访问失败', err);
      return;
    }

    // 打印访问结果
    console.log('访问成功', body);
  });
}
```

在这个示例代码中,我们首先尝试从本地文件中读取保存的 cookie,如果有保存的 cookie,则直接使用 cookie 访问需要登录才能访问的页面;如果没有保存的 cookie,则发送登录请求,登录成功后保存 cookie,并使用 cookie 访问需要登录才能访问的页面。

综合以上,还是用下面的足够使用 。2合一更好。

const request = require('request');

// 登录请求
const loginOptions = {
  url: 'https://example.com/login',
  form: {
    username: 'your_username',
    password: 'your_password'
  }
};

request.post(loginOptions, (loginError, loginResponse, loginBody) => {
  if (loginError) {
    console.error(loginError);
    return;
  }

  // 提交表单请求
  const submitOptions = {
    url: 'https://example.com/submit',
    headers: {
      Cookie: loginResponse.headers['set-cookie'] // 将登录响应中的 Set-Cookie 头部设置到请求头中
    },
    form: {
      field1: 'value1',
      field2: 'value2'
    }
  };

  request.post(submitOptions, (submitError, submitResponse, submitBody) => {
    if (submitError) {
      console.error(submitError);
      return;
    }

    console.log(submitBody);
  });
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值