node request模块cookie使用

Node.js中request模块的HTTP请求处理与实践指南 HTTP请求是Web开发中的基础技术,用于客户端与服务器之间的数据交换。request模块作为Node.js生态中的经典HTTP客户端,通过简化的API设计实现了各种HTTP方法的调用,支持表单提交、JSON传输等常见场景。其核心原理基于Node.js的http模块封装,提供了请求配置、流式处理、Cookie管理等实用功能。在技术价值方面,request模块显著降低了网络编程门槛,特别适合快速开发REST API客户端、实现文件传输或构建Web爬虫等应用。随着现代前端工程的发展,虽然axios等基于Prom 阅读详情

前言

很多网站都有302或者301仿爬虫, 响应头就会带上set-cookie, 那我们用node如何处理呢?

开始

简洁版

let request = require("request");

// 开启记录cookie,重定向时自动带上cookie
request = request.defaults({jar: true});


function login_redirect(url) {
    console.log("url: ", url);
    let options = {
        url: url,
        method: "GET",
        headers: {
            "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.62 Safari/537.36'
        },
        // 重定向
        followRedirect: false
    }
    request(options, function(error, response, body) {
        console.log("...login_redirect.....");

        // console.log(response.statusCode);
        // console.log(response.headers);

        if (response.statusCode == 302 || response.statusCode == 301) {
            login_redirect(response.headers.location);
        } else {
            console.log("...跳转完...");
            // console.log(response);
            // console.log(body);
        }
    });
}

文件版

let request = require("request");

// 在根目录创建cookie.json文件
const FileCookieStore = require('tough-cookie-filestore');
const cookieJsonStore = new FileCookieStore('cookies.json')
const j = request.jar(cookieJsonStore);
request = request.defaults({ jar : j })


function login_redirect(url) {
    console.log("url: ", url);
    let options = {
        url: url,
        method: "GET",
        headers: {
            "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.62 Safari/537.36'
        },
        // 重定向
        followRedirect: false
    }
    request(options, function(error, response, body) {
        console.log("...login_redirect.....");

        // console.log(response.statusCode);
        // console.log(response.headers);

        if (response.statusCode == 302 || response.statusCode == 301) {
            login_redirect(response.headers.location);
        } else {
            console.log("...跳转完...");
            // console.log(response);
            // console.log(body);
        }
    });
}

推荐版

let request = require("request");

const j = request.jar();
request = request.defaults({jar:j});


function login_redirect(url) {
    console.log("url: ", url);
    let options = {
        url: url,
        method: "GET",
        headers: {
            "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.62 Safari/537.36'
        },
        followRedirect: false
    }
    request(options, function(error, response, body) {
        console.log("...login_redirect.....");

        // console.log(response.statusCode);
        // console.log(response.headers);

        if (response.statusCode == 302 || response.statusCode == 301) {
            login_redirect(response.headers.location);
        } else {
            console.log("...跳转完...");
            // console.log(response);
            // console.log(body);
            
            console.log("cookie为:", j.getCookieString(url))
        }
    });
}

nodejs 使用http进行post或get请求的实例(携带cookie) 安装http nmp install http 函数封装(可直接拿去进行使用) var http = require('http'); function nodePostGetRequest(HOST, PORT, method, bodydata, callBackFunction, path, cookie) { //把将要发送的body转换为json格式 var body = bodydata; var bodyString = JSON.stringify(body); //http 头部 var headers = { 'Content-Type': 'applic 立即下载

相关推荐

LabVIEW vs Python:谁更适合你的ATE自动化测试系统?实测对比与选型建议

本文深入对比了LabVIEW和Python在ATE自动化测试系统中的性能表现、开发效率和应用场景,帮助工程师根据实时控制需求、数据处理复杂度及团队技能做出最优选型决策。通过实测数据和典型案例,分析两者在硬件集成、系统性能和维护成本等方面的差异,并提供混合架构实施建议。

weixin_29240711的博客 276

IDEA社区版主题字体设置

1. 设置主题 打开Settings设置 凭个人爱好选择主题 2. 字体设置 点击Fone进行字体设置,按个人爱好设置,取消勾选显示全部列表(个人偏好旗舰版默认字体Monospaced) 3. 设置java代码属性 点击Language Defaults设置默认属性,可点击列表或直接点击下方案例进行设置默认属性,单选加粗/斜体、颜色等,如图为关键字key的默认设置 点击Java进行java代码属性设置,可直接勾选Inherit values from选择上图的默认设置,或进行自定义设置。 4. 个

qq_41606547的博客 1373

【深度学习】肺结节分割项目实战二:分割肺实质

在后续训练模型的时候如果直接使用原始的肺部CT图像,其中的非肺区域会对训练造成干扰,因此我们需要提取分割肺实质。这一部分参考了kaggle上的教程。 从这张CT图像中可以看出扫描器以外的部分为黑色,背景和肺内部颜色较深,非肺组织和骨头颜色较浅。我们的目的是将肺部分割出来。由于肺部区域和其他部分对比明显,我们可以设置一个合适的阈值对图像中的区域进行隔离。 import argparse import os import numpy as np from medpy.filter.smoothing imp

weixin_42182906的博客 7240

NodeJs 发送request请求 设置Cookie

把原有的BS框架重组,把NodeJs引进来,管理Restful请求。同时维护利用NodeJs前端Session,这样就可以减轻Tomcat、Was等sever的Session过重的问题。

坑爹程序猿的专栏 1万+

计算机视觉-全景图像拼接中的特征匹配与优化策略

本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。

weixin_29039773的博客 361

微信小程序 - 实现大文件上传分片/切片+本地选择文件上传超大文件,小程序大文件切片上传+断点续传+上传进度条+失败自动重传完整运行示例源码,支持图片、视频、文档各种文件(支持上传单个文件或批量上传)

微信小程序实现大文件上传,实现分片大文件上传,微信小程序 分片 断点续传 大文件上传,微信小程序实现大文件上传 分片上传 进度条,小程序文件分片上传,微信小程序如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,微信小程序实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,微信小程序wx.uploadFile,小程序上传视频,小程序上传文档,实现大文件上传(切片上传)实现大文件上传到服务器教程,支持批量多

🏆 前端领域优质创作者 1万+

node.js模拟cookie信息请求数据

有时候获取第三方服务器数据、抓取网站数据时,需要验证cookie信息才能拿到,用nodejs本身的 https模块设置请求头,再发送请求即可

huaermeier的博客 864

02-Redis 核心特性与数据结构详解:揭秘高性能的技术内核

本文深度拆解 Redis 高性能的技术内核:揭秘其凭“内存存储 + C 语言开发” 实现微秒级延迟、10 万 + QPS 的性能优势;详解 5 种基础数据类型(String/Hash 等)与 4 种扩展数据类型(Stream/Geospatial 等)的特性及场景;还介绍多语言支持、RDB/AOF 持久化、主从复制 / 哨兵 / 集群等高可用方案,助读者掌握 Redis 技术核心与实践逻辑。

蜗牛老师,专注编程领域 996

爬虫基础知识

注意:cookie内容要以键值对的形式存在。重载start_requests方法。

7546

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

视觉人机器视觉的博客 2639

uniapp - 使用 <video> 播放视频黑屏,浏览器控制台报错: DOMException: The element has on supported sources.(详细完美解决方案)

uniapp video 视频播放黑屏,uniapp 报错DOMException: The element has on supported sources.,uniapp如何解决DOMException: The element has on supported sources.,uniapp使用video标签无法播放视频出现黑屏问题处理,uniapp解决video视频黑屏显示0秒,并且浏览器报错DOMException: The element has on supported sources.,un

✅ 精选推荐文章 7055

Node.js request模块 透传cookie

版本: request:2.85.0 express:4.14.1 代码: var express = require('express'); var router = express.Router(); var request = require('request'); router.get('/token', function(req, res, next) { var u...

baozhutang的博客 3522

linux内核学习(一)---内核社区介绍及补丁提交

本系列开始会对linux内核进行系统性的学习,以源码与内核社区为基础,了解前沿的内核机制,同时也深度了解linux内核中的一些经典机制 本章会先对linux内核社区进行简单的介绍,包括源码下载、内核社区的修改提交

文艺小少年的博客 536

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

在这个示例代码中,我们首先尝试从本地文件中读取保存的 cookie,如果有保存的 cookie,则直接使用 cookie 访问需要登录才能访问的页面;如果没有保存的 cookie,则发送登录请求,登录成功后保存 cookie,并使用 cookie 访问需要登录才能访问的页面。综合以上,还是用下面的足够使用。有的时候,我们通过登录把cookie存储起来。

初学者的专栏 195

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Request —— 让 Node.js http请求变得超简单

Request —— 让 Node.js http请求变得超简单 Node.js的模块——request。有了这个模块,http请求变的超简单。

流光碎影儿 3942

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

nodejs request模块302重定向解决办法

nodejs request模块302重定向解决办法 有两种方法处理,下面以https://bbs.125.la/为例: 1、开启记录cookie的 jar var request = require('request'); //开启记录cookie,重定向时自动带上cookie request = request.defaults({jar: true}) var options = { ...

u013816098的专栏 7086

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

nodejs模拟登录-request模块

nodejs模拟登录

意外金喜 3万+

在Node.js中发出HTTP请求

在以前的文章中,我专注于创建一个Node.js的服务器来处理HTTP请求。 本文着眼于反向的问题,通过向您展示如何让HTTP从您的Node.js应用程序的请求。 你可能会问自己,为什么你会想这样做。 两个应用程序来马上介意- 网页抓取和代理 。 铲运机是个软件下载该网页和编程从中提取信息。 代理服务器充当中介,转发客户端请求到其他服务器返回的响应。 请求模块 创建HTTP最简单的方法要求在N...

143

node.js教程3(cookie,art-template,Express框架,Router路由,更换模板引擎)

node.js教程(cookie,art-template,Express框架,Router路由,更换模板引擎)

谢谢你的关注 382

node.js简单爬虫

仅供学习参考! 准备工作,先安装 node.js… 之后装 request , zlib ,cheerio 等模块 const request = require(‘request’); const zlib = require(‘zlib’); const cheerio = require(‘cheerio’); //开启记录cookie,重定向时自动带上cookie //request = request.defaults({jar: true}) var options = { url: ‘’,

zhanzhan 217

response使用详情

提示:以下是本篇文章正文内容,下面案例可供参考。

weixin_44659323的博客 520

Node.js从0到1:如何构建一个Web服务器

本文介绍了如何使用Node.js构建简单的Web服务器。主要内容包括:1)通过http模块创建服务器实例;2)使用listen()方法启动服务器监听;3)绑定request事件处理客户端请求;4)利用response对象进行响应设置,包括状态码、响应头和响应体。文章详细说明了http模块的核心功能,如请求方法、请求头、请求体处理,以及响应状态码、响应头设置等关键概念。最后通过一个"Hello World"示例代码演示了完整的服务器创建流程,涵盖响应头设置、状态码返回和响应体发送等核心操作

城南蝈蝈 425

jquery-cookie 贡献指南:从环境搭建、构建与测试到提交 Pull Request 的完整开发工作流

jquery-cookie 是一个简单、轻量的 jQuery 插件,用于读取、写入和删除 Cookie([README.md](https://link.gitcode.com/i/a56a90ef56293dd2cad479318f00d04c))。本文以仓库中的 [CONTRIBUTING.md](https://link.gitcode.com/i/e8695ab71c3a0b506826b

gitblog_01176的博客 365

006 - node.js

006 - node.js 加解密算法 const crypto = require('crypto') let Encrypt = (data, key) => { const cipher = crypto.createCipher('aes192', key); var crypted = cipher.update(data, 'utf8', 'hex'); crypted += cipher.final('hex'); return crypted; }

qq_30856231的博客 263

Node.js原生http模块实战:从HTTP原理到完整Web服务

HTTP协议是Web开发的基石,理解它的请求-响应模型、方法语义与状态码,是排查线上问题与设计健壮接口的关键。Node.js原生http模块没有框架的封装,能让你直接接触请求报文、响应头、流式请求体等底层细节,从而建立对Web服务本质的认知。从接收请求、解析路由、返回JSON到加载静态资源,手写一个完整服务不仅巩固协议知识,更能培养独立排错能力。本文从HTTP基本概念讲起,逐步过渡到原生模块的代码实践,覆盖POST请求体处理、状态码使用、curl调试等常见场景,适合希望打牢后端基础、在框架之外获得透传视角的

weixin_33416697的博客 345

Ajax 同源问题 CORS解决方案 借助服务器端获取数据

CORS 跨域资源共享 客户端: 维持Ajax代码不变 服务器端:设置头部 1.设置哪些客户端可以访问我 res.header('Acess-Control-Allow-Oragin','*') //第一个参数为要设置的请求头部,第二个参数为可以访问的域名 2.设置允许客户端使用哪些请求方法来访问我 res.header('Acess-Control-Allow-Methods','post,get') //第二个参数为请求方法 跨域中是否携带cookie数据 xhr...

procul的博客 235
上一篇: 如何触发‘isTrusted = true‘点击事件
下一篇: vue3颜色选择器
An_s
博客等级 码龄10年 665粉丝 363原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

An_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值