NodeJS模拟request请求

本文介绍了如何使用NodeJS来模拟浏览器的request请求,通过详细讲解一段代码,演示了如何设置请求参数并发送到服务器,以此实现类似浏览器F12 Network工具的功能。适合对NodeJS感兴趣的前端开发者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近又拿起去年学了一段时间又放弃的NodeJS,由于本身是做java开发以及兼顾前端的程序猿,NodeJS用的还是比较少的,不用就容易忘记。在慕课网学习scott的NodeJS视频,展示了一个比较有意思的例子,用nodejs模拟慕课网评论.
话不说多,直接上代码:

var http = require('http')
var querystring = require('querystring')

var postData = querystring.stringify({
    'content':'更新太慢勒',
    'mid':8837
})

var options = {
    hostname:'www.imooc.com',
    port:'80',
    path:'/course/docomment',
    method:'POST',
    headers:{
        'Accept':'application/json, text/javascript, */*; q=0.01',
        'Accept-Encoding':'gzip, deflate',
        'Accept-Language':'zh-CN,zh;q=0.8',
        'Connection':'keep-alive',
        'Content-Length':postData.length,
        'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
        'Cookie':'imooc_uuid=fe4eb00a-b08b-4442-a87d-c077f0fa94dc; imooc_isnew_ct=1482112514; loginstate=1; apsid=I3ODRkMzRiY2MzNjZkZDlkNzZkZDk3OGYwNGFkYTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAyNjA1OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMjE0NDgzNjM5QHFxLmNvbQAAAAAAAAAAAAAAAAAAADhjOTM3MTEyMTVkZDJkODBiZGQ5MGZhYjUxZDk2YTNkADZbWAA2W1g%3DYj; last_login_username=1214483639%40qq.com; PHPSESSID=dlq6ctudtje87erfq523b0dak7; jwplayer.volume=71; IMCDNS=0; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1482112514,1482372528,1482377953,1482457056; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1482460689; imooc_isnew=2; cvde=585c7fe052b01-26',
        'Host':'www.imooc.com',
        'Origin':'http://www.imooc.com',
        'Referer':'http://www.imooc.com/video/8837',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36',
        'X-Requested-With':'XMLHttpRequest'
    }
}

var req = http.request(options,function(res){
    console.log('Status:'+res.statusCode)
    console.log('headers:'+JSON.stringify(res.headers))

    res.on('data',function(chunk){
        console.log(Buffer.isBuffer(chunk))
        console.log(typeof chunk)
    })

    res.on('end',function(){
        console.log('评论完毕')
    })
})

req.on('error',function(e){
    console.log('Error:'+e.message)
})

req.write(postData)
req.end()

下面我详细讲解下具体代码的含义:

var postData = querystring.stringify({
    'content':'更新太慢勒',
    'mid':8837
})

这块代码通过实现模拟在浏览器F12-》NETWORK工具中提交评论时捕获的request请求
这里写图片描述
其中有两个参数,一个content和mid,作为模拟参数。

变量option里面存放的是请求参数:
这里写图片描述

后面定义request请求然后直接写入请求参数,req.write(postData),传到服务器模拟请求。

NodeJS视频学习推荐:http://www.imooc.com/learn/348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值