ajax 被京东反爬虫 怎么解决中文乱码?

发布于 2022-09-11 19:47:33 字数 1550 浏览 10 评论 0

axios 访问京东某个商品获取商品评价信息

相关代码

const axios = require("axios");
(async () => {
  const productId = "100002928171";
  await axios({
    method: "GET",
    url: `https://sclub.jd.com/comment/productPageComments.action`,
    params: {
      productId,
      score: 0,
      sortType: 5,
      page: 0,
      pageSize: 10, // 某一页
      isShadowSku: 0,
      fold: 1
    },
    headers: {
      DNT: 1,
      Referer: `https://item.jd.com/${productId}.html`,
      "sec-ch-ua": "Google Chrome 74",
      "Sec-Fetch-Dest": "script",
      "Sec-Fetch-Mode": "no-cors",
      "Sec-Fetch-Site": "same-site",
      "Sec-Fetch-User": "?F",
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
    }
  }).then(res => console.log(res.data));
})();

你期待的结果是什么?实际看到的错误信息又是什么?

返回数据是中文乱码

clipboard.png

我一开始以为axios解析问题然后我用postman模拟了一次访问,得到了中文字体

clipboard.png
后来为了验证不是axios的问题,我把postman请求的数据下载下来

clipboard.png
结果打开还是乱码

clipboard.png

所以现在问题很明显 我应该怎么转码? 还是说axios数据被压缩了 ?
打开postman下载的数据然后用vscode试了编码重新打开 全是乱码。。。

补充。。。用chardet.detect(data.data.comments)返回字符集 UTF-32BE

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

五里雾 2022-09-18 19:47:33

请求数据,二进制数据,然后用iconv转码为gb2312就可以了。。。。 此贴结了

又爬满兰若 2022-09-18 19:47:33

如果是被压缩就全部被压缩了,而不会只有中文压缩英文却没事。

我用 PHP 测了一下,这个网页编码是 GBK 编码,按 UTF-8 编码处理就会出现了中文乱码其他正常的情况。

转码就行。PHP GBK 转 UTF-8 的代码是:

<?php
$response = iconv('GBK', 'UTF-8', $response);

我不熟悉 axios ,网上搜一下 axios gbk 看到是有很多文章说到转码问题的,但我这里没有 Nodejs 环境,就不帮你测 axios 的转码代码了,你自己找找吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文