- - api:
https://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=qq号
返回数据:
网页显示:
网页显示的内容是chorme浏览器自动转成GBK的.
使用node+http-proxy-middleware+iconv-lite进行跨域调用和转码:
代码:
router.get('/qqinfo', createProxyMiddleware({
changeOrigin: true,
// selfHandleResponse: true,
target: 'https://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg',
pathRewrite: { '^/api/out/qqinfo': '' },
onProxyReq(proxyReq, req, res) {
proxyReq.setHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9');
proxyReq.setHeader('Cache-Control', 'no-cache');
proxyReq.setHeader('Accept-Language', 'zh-CN,zh;q=0.8;en-US;q=0.9');
proxyReq.setHeader('sec-fetch-site', 'none');
proxyReq.setHeader('referer', '');
proxyReq.setHeader('sec-fetch-mode', 'navigate');
proxyReq.setHeader('sec-fetch-user', '?1');
proxyReq.setHeader('Host', 'r.qzone.qq.com');
proxyReq.setHeader('sec-fetch-dest', 'document');
proxyReq.setHeader('Upgrade-Insecure-Requests', '1');
},
onProxyRes(proxyRes, req, res) {
let arr = [];
proxyRes.on('data', (chunk) => {
arr.push(chunk)
})
proxyRes.on('end', () => {
arr = Buffer.concat(arr)
console.log(arr) //buffer
let str1 = iconv.decode(arr, 'utf-8')//乱码
let str2 = iconv.decode(arr, 'GBK') //通过node转换gbk
console.log(str1) //乱码
console.log(str2) //乱码
res.end(str)//乱码,注释直接返回代理请求结果正常显示.
})
},
}))
不经过node转码直接返回(浏览器GBK编码):