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