目标网站:https://zozo.jp/welcome/default.html
当我把这个链接放到浏览器访问时,数据展示一切正常;如果我用 postman 或者程序访问这个链接就会出现乱码,请求头设置和浏览器抓包的请求头一样 还是乱码。测试了半天没找到问题,感觉很奇怪;发出来给大伙看看,有没有清楚这是什么问题导致的,服务端有办法检测我不是浏览器吗😳
1
aeron 2023-05-06 17:34:05 +08:00
有反爬吧,检测是不是浏览器有很多方法的,不止请求头
|
2
encro 2023-05-06 17:40:58 +08:00
<meta charset="Shift_JIS">
你的爬虫的编码格式和它不一致。 |
3
rookie4show 2023-05-06 17:43:22 +08:00
f12 看了下,直接返回的就是乱码的,然后有几个 js 执行了,可能是替换内容的
|
4
pretty66 OP @rookie4show 浏览器请求 F12 看不是乱码啊,我用浏览器把 js 禁用后浏览器发起请求后依然正常的
|
6
NoOneNoBody 2023-05-06 17:48:09 +08:00
1. shift-jis
2. 见到好几个 js 都运行了 eval ,估计是需要客户端渲染 |
7
sunshijie 2023-05-06 17:51:22 +08:00
import requests
headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', } response = requests.get('https://zozo.jp/welcome/default.html', headers=headers) res = response.content.decode("Shift_JIS") print(res) 试了下好像没什么问题 |
8
encro 2023-05-06 17:52:30 +08:00
得看你用什么爬虫,将编码进行转码。
再不行就上 puppeteer |
10
NoOneNoBody 2023-05-06 17:53:57 +08:00 2
@pretty66 #5
shift-jis 是日语常用编码,双字节,你可以想象和中文 GBK 差不多,但映射不同的字 相同的两个字节,gbk 输出是中文,shift-jis 输出是日文,euc-kr 输出是韩文,所以客户端要选对编码(现代浏览器是自动适应,所以不会乱码) |
11
pretty66 OP @NoOneNoBody 好的 非常感谢你的解答,差不多明白咋回事了,我再试下
|