手机应用数据爬取:HTTP响应乱码问题求助
解决Burp Suite捕获韩系通讯APP HTTPS响应乱码问题
我在爬取一款韩国通讯类APP的消息数据时,用Burp Suite抓包HTTPS请求,返回内容全是乱码。响应截图如下:
请求头关键参数
Content-Type: application/jsonAccept-Encoding: gzip, deflateAccept-Language: en-US;q=1, ko-US;q=0.9
我的需求是获取API返回的英文或韩文明文数据,可提供对应的Python GET请求代码。
乱码响应内容
xœíWmoÛ6þ+?×6ïÌÇ4,E‡.Ý—¢0(òèhU$Á–²AþûHŠvœ-ÙK´Ð/ïxw¼;ñžÇº9ÜõOx3;>šQE”¥ÎsePY�ÐŽ–XA)/‚ä³WG³Ú_Üô˜< ‰›®»ÚFév†qÂh^7v;¼¾´Ã"-<6C}•\Ú±i¢Ï~·öŸS C•b†’VMç>½Áv<¯·CÜý0«ÛëzÀ´wÝMÏ~l×éiG_w9©+»ž,jYãºv°nHËP7“WcÎ>¦Í Úã7¹-™‘,Ù´ö T0<5f_i.hJûvïw|´¯ Úí\´wQŸû¦ó¸ðñä‡íèzlS;rÌj¬ª/ló)‹WöóYÛÃ9¶ëáòí§ƒã/KgÅàéœ|® YS<<¯e^Ë);‘Öñ7®uÖkR"•PIbY`%nŽ:i‹:I*Š”H%T9»ž$š:ù¤¶(5i‹ºÄ*ÁrŽdós’'©ì•”‘)!)¦*K™¥S3Rï7¸ÅáöÍÍ©M—=%pööbuòþääü‡Õ/ïOVo>{Þ|¼Íjz˃‹±«ÛÔþØØuJ ê~Çêµu—ùÂ,m_/¯aY<ÓeY^ávïåRb$WžJhU�ë*é°\¦¤£”+â8µR{c*/L—Üië••†VVI*PN”£S¢M¬!në4 Òè ЂõÚ{"@á%·Œ¬rþƒÝ¤[uj›¦êö¾¢Ó‹<ÿ„Ò9‘sàGŽ =&»ºÌ;¶þÐ^ÏAf{8æfwÎðtĻſý4{öCôñ°É÷ˆNÐä{W¦0OÄ.«1ØuŽw»³)в¥lÇ~ˆh·}ˆD§Ød0ÚÆÒ Üý¡Á.äÞöCݵø¹híê˜ÅM¹!dg6‡´þWÜÔagw‡ˆXa×DSJ%…dŒš|¬mÛnlVº=ž«õYÂÂ=x^C¿=^.+;ï7]‚¹kíf>.\·ìÃ*å~²^Õ«nGv’ƒŽ ®¤YüÖ¯ó«Yoº±?›:ÛQÙ6µ3(ý¼{µë7û` ‰øÆ$ ĘîÁâ`븇ûRA‚†Ë½ö; ¼d˜Þþs’�0� ¥ŠKRI©€`¥‘b|O–)‡”{ëwÜU<ĵñRg‚¯"1„È%Ú+MqF æ•&¼‚àÍÿŸbŸ“Ø‹$xǦFàìk@¤ãB`¤&êq`C\*eä—‘€øÖ$�ùð_‡$+¸'8Ô~'—LðÜ$ ]ˆKÅ(xÏP ª•Šä+Cµ�”Q…TGôg•¥Á�@àà±ÜB0¡rî"g ªFbð\2tVþ€9åG@¨ò¯H€Ê#È$Àø£$ð0âS$�O’@üüø›|¿„ (½Tšò¡šóuH@ìI€SFô£$ Ÿ iÔÒ¹³‹Í˜1÷OõÐtJs‘àîm¹ö@
解决思路与步骤
1. 处理Gzip/Deflate压缩
请求头显示客户端接受压缩响应,服务器大概率返回了gzip压缩数据,这是乱码核心原因。
Burp Suite自动解压设置
- 打开Burp Suite,进入
Proxy->Options - 找到
Response Modification区域,勾选Automatically decompress gzip/deflate - 重新抓包查看响应,即可获取明文JSON
Python手动解压验证
如果Burp设置后仍有问题,用Python发送请求并手动解压,示例代码:
import requests import gzip from io import BytesIO url = "你的目标API地址" headers = { "Accept-Encoding": "gzip, deflate", "Accept-Language": "en-US;q=1, ko-US;q=0.9", # 补充其他必要请求头,比如User-Agent、Authorization等 } response = requests.get(url, headers=headers) # 处理压缩响应 if response.headers.get('Content-Encoding') == 'gzip': buffer = BytesIO(response.content) with gzip.GzipFile(fileobj=buffer) as f: decoded_data = f.read().decode('utf-8') elif response.headers.get('Content-Encoding') == 'deflate': decoded_data = response.content.decode('utf-8') else: decoded_data = response.content.decode('utf-8') print(decoded_data)
2. 检查字符编码
解压后仍乱码,尝试切换韩系常用编码euc-kr:
# 替换utf-8为euc-kr decoded_data = f.read().decode('euc-kr')
3. 确认HTTPS证书配置
确保Burp Suite的CA证书已正确安装到手机,避免因证书校验失败导致的异常加密返回。
4. 特殊加密处理(若上述方法无效)
部分通讯APP会对响应做自定义加密,需:
- 逆向分析APP代码,找到解密逻辑
- 在Burp中编写插件自动解密响应
内容的提问来源于stack exchange,提问作者mdssi
相关产品推荐
相关产品推荐

