绕过Referer和Host检查
2024-08-28 21:49:42
1、我们在尝试抓取其他网站的数据接口时,某些接口需要经过请求头中的Host和Referer的检查,不是指定的host或referer将不予返回数据,且前端无法绕过这种检查
此时通过后端代理解决
在vue-cli 环境下,以qq音乐为例伪造请求头:
1.1 打开配置文件webpack.dev.conf,js,安装express,axios
并在文件开头const portfinder = require('portfinder')后进行引入
const axios = require('axios')
const express = require('express') let app = express()
let apiRoutes = express.Router()
app.use('/api', apiRoutes) 1.2 找到devServer节点,在其中配置新增before函数调用,在函数体内使用axios代为发送请求,前端的请求将请求到这里
before(app) {
app.get('/api/getDiscList', (req, res) => {
const url = "https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg"
axios.get(url, {
headers: {
referer: "https://y.qq.com/m/index.html",
host:'c.y.qq.com'
},
params: req.query//转发前端请求的参数
}).then((response) => {
res.json(response.data)//传回qq后台相应的请求至前端
}).catch((err) => {
console.log(err)
}) })
}
1,.3 修改前端请求地址
export function getDiscList() {
// 使用jsonp抓取数据
const url = '/api/getDiscList' const data = Object.assign({}, commonParams, {
_: '1557234847616',
platform: 'yqq',
hostUinL: 0,
sin: 0,
ein: 29,
sortId: 5,
needNewCode: 0,
categoryId: 10000000,
rnd: Math.random(),
format: 'json'
}) return axios.get(url, {
params: data
}).then((res) => {
return Promise.resolve(res.data)
})
}
最新文章
- OSGi 基本原理
- HTML和xhtml,CSS
- java:如何用代码控制H2 Database启动
- iOS 多线程及其他补充
- [知识点]平衡树之Splay
- matlab-----均值滤波函数的实现
- object覆盖的div解决办法
- Mac terminal commands
- MSF初体验 - kali linux 入侵XP系统
- 打开safari开发者选项
- MS08_067漏洞学习研究
- python笔记:#007#变量
- [Jetty] Debugging With Eclipse
- FL Studio中的音频设置
- RequireJs 的 使用
- 微信js sdk的使用初步理解
- Program type already present:okio.AsyncTimeout$Watchdog Message{kind=ERROR, text=Program type :okio
- postman 学习网址
- Java 使用stringTemplate导出大批量数据excel(百万级)
- mac for appium环境安装