firefox导出的har和fiddler导出的har有些区别,其中fiddler导出har是可以转换的,firefox不行,具体情况下面详述。
aspstar opened this issue · 2 comments
aspstar commented
har2case在转换FIREFOX或谷歌浏览器导出的HAR时报错,报错信息如下:
post_data = utils.x_www_form_urlencoded(post_data)
File "c:\Python33\lib\site-packages\har2case\utils.py", line 50, in x_www_form
_urlencoded
for key, value in origin_dict.items()
AttributeError: 'str' object has no attribute 'items'
发现问题出在 解析"text": "operation=goLoginSelectPage"时,utils.x_www_form_urlencoded(post_data)
报错了。主要原因是firefox或谷歌浏览器导出的HAR与FIDDLER有些不同如下所示:
谷歌:
"headersSize": 684,
"bodySize": 27,
"postData": {
"mimeType": "application/x-www-form-urlencoded",
"text": "operation=goLoginSelectPage",
"params": [
{
"name": "operation",
"value": "goLoginSelectPage"
}
fiddler:
"postData":{"params":[{"name":"operation", "value":"goLoginSelectPage"}], "mimeType":"application/x-www-form-urlencoded"}, "method":"POST", "queryString":[]}
附上两段导出的har,需要把txt文件名改成har
fiddler.txt
firefox.txt
aspstar commented
改了一下utils.py的源代码,不报错了,明天验证一下,真实测试有没有影响。
# modify this code for fix firefox & google export har convert case fail by wang
re=origin_dict
try:
re="&".join([
"{}={}".format(key, value)
for key, value in origin_dict.items()
])
except:
pass
return re
# return "&".join([
# "{}={}".format(key, value)
# for key, value in origin_dict.items()
# ])