首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从响应中提取损坏的JSON

从响应中提取损坏的JSON
EN

Stack Overflow用户
提问于 2021-08-17 11:45:59
回答 2查看 37关注 0票数 0

我正在使用python3中的requests向雅虎登录网站发送post请求,在Burpsuite中我得到了以下响应:

代码语言:javascript
运行
复制
HTTP/1.0 200 OK
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Age: 0
Pragma: no-cache
Expires: 0
Referrer-Policy: origin-when-cross-origin
Cache-Control: no-cache, no-store, must-revalidate
set-cookie: AS=v=1&s=8ZJenFRo&d=A611b9f16|50....OXCxVzImJQI-~A; path=/; domain=login.yahoo.com; secure; HttpOnly
Content-Type: application/json; charset=utf-8
Content-Length: 149
Vary: Accept-Encoding
Date: Tue, 17 Aug 2021 11:20:50 GMT
Strict-Transport-Security: max-age=15552000
Server: ATS

{"location":"/account/challenge/recaptcha?done=https%3A%2F%2Fwww.yahoo.com%2F&sessionIndex=QQ--&acrumb=8ZJenFRo&display=login&authMechanism=primary"}

我们的目标是在python中实现这一行。

代码语言:javascript
运行
复制
{"location":"/account/challenge/recaptcha?done=https%3A%2F%2Fwww.yahoo.com%2F&sessionIndex=QQ--&acrumb=8ZJenFRo&display=login&authMechanism=primary"}

我编写了一个简单的脚本来执行post请求,但在调用response.json()时它崩溃了

代码语言:javascript
运行
复制
import requests
from user_agent import generate_user_agent

def check_yahoo(email):
  yahoo_url = "https://login.yahoo.com"
  data= {"username":f"{email}"}
  heads = {"User-Agent":f"{generate_user_agent()}"}
  response = requests.post(yahoo_url , params=data , headers=heads)
  print (response.json())
  return 

#driver code 
check_yahoo("some.one@yahoo.com")

如果json数据被破坏,如何提取它?

错误

代码语言:javascript
运行
复制
  File "/home/kali/Desktop/yah00/yah00.py", line 49, in <module>
    check_yahoo(item)
  File "/home/kali/Desktop/yah00/yah00.py", line 37, in check_yahoo
    print (response.json())
  File "/usr/lib/python3/dist-packages/requests/models.py", line 900, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 525, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
EN

回答 2

Stack Overflow用户

发布于 2021-08-17 11:52:58

json看起来没问题,所以可能是空行抛出了它。response.text的内容是什么?如果包括空行,则如下所示

代码语言:javascript
运行
复制
json.loads(response.text.strip())

可能就够了。

票数 0
EN

Stack Overflow用户

发布于 2021-08-17 11:54:55

您可以使用try/except调试您的错误,如下所示:

代码语言:javascript
运行
复制
    def some_function(data):
       try:
          *enter your success code*
       except:
          *enter in error statement*

https://docs.python.org/3/tutorial/errors.html中查看更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68816779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档