关于爬虫中所用到的请求拦截器和响应拦截器

1、首先我们看一下,axios的发包

axios = require('axios')        //导入axios包


//用axios发包,then回来的来处理服务器返回的数据(响应头)
// then 是axios接收后台返回数据的 vue jquery
// success 是的接收后台返回数据 ajax
axios.get('http://httpbin.org/get').then(function (res){
        console.log(res.data)
})

 

 A、请求拦截器

// Interceptors-拦截器
// 请求拦截器:在发送请求之前,可以借助一些函数来对请求的内容和参数做一些检测。若有问题可以直接取消清求。
// 响应拦截器:当服务器返回响应数据时,响应拦截器会在我们拿到结果前预先处理响应数据。例如对响应数据做一些格式化处理,或者当响应失败时,可以做一些失败提醒和纪录。
//npm install axios
axios = require('axios')
//设置请求拦截器  请求拦截器
axios.interceptors.request.use(function (config){
        console.log('请求拦截器成功')
        config.timeout=2000;//修改请求config
        config.headers['sign']= 'exs4CQYVFQ1Udq4WPjL7XgA1MLk4WLVHUFKISwhXUgQaI0dJTEwCBWFTXVIPAyFBUA=';
        config.headers['url']='http://www.baidu.com';
        // config.url = '我已经改过了_haha';
        return config;
},function (error){
        console.log('请求拦截器失败')
        return Promise.reject(error);
});
//发送请求
axios.get('http://httpbin.org/get').then(res=>console.log(res.data))

结果:

请求拦截器成功
{
  args: {},
  headers: {
    Accept: 'application/json, text/plain, */*',
    'Accept-Encoding': 'gzip, compress, deflate, br',
    Host: 'httpbin.org',
    Sign: 'exs4CQYVFQ1Udq4WPjL7XgA1MLk4WLVHUFKISwhXUgQaI0dJTEwCBWFTXVIPAyFBUA=',
    Url: 'http://www.baidu.com',
    'User-Agent': 'axios/1.3.6',
    'X-Amzn-Trace-Id': 'Root=1-6445f4f6-123280943ab95d2706825c94'
  },
 

由上面的结果 可以看出 headers中增加一条:

Sign: 'exs4CQYVFQ1Udq4WPjL7XgA1MLk4WLVHUFKISwhXUgQaI0dJTEwCBWFTXVIPAyFBUA=',
这就是在拦截器在发包之前拦截的请求后进行处理的结果。
B、响应拦截器

axios = require('axios')
//设置响应拦截器
axios.interceptors.response.use(function (response){
        console.log('响应拦截器成功')
        console.log('调解密☑数进行解密数据')
        //return response;
        // return response.data;//修改响应数据
        return {'name':'lyt到处一流'};//修改响应数据
},function (error){
        console.log('响应拦截器失败')
        return Promise.reject(error);
}),
//
//拦截响应
axios.get('http://httpbin.org/get').then(res=>console.log(res))

结果:

响应拦截器成功
调解密☑数进行解密数据
{ name: 'lyt到处一流' }

Process finished with exit code 0

由上面的结果可以看出,返回的时候,把响应的结果进行了处理。

{ name: 'lyt到处一流' }

 

===============================================================================================================================================



/*
js发包的顺序:由下图可见:请求拦截器在发包之前
响应拦截器在发包之后
js发包----请求拦截器 -----组装参数------初始化------发包------接收响应------响应拦截-----JS渲染
axios
*/

posted @ 2023-04-24 11:34  *感悟人生*  阅读(205)  评论(0编辑  收藏  举报