我正在使用python3中的requests向雅虎登录网站发送post请求,在Burpsuite中我得到了以下响应:
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中实现这一行。
{"location":"/account/challenge/recaptcha?done=https%3A%2F%2Fwww.yahoo.com%2F&sessionIndex=QQ--&acrumb=8ZJenFRo&display=login&authMechanism=primary"}我编写了一个简单的脚本来执行post请求,但在调用response.json()时它崩溃了
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数据被破坏,如何提取它?
错误
  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)发布于 2021-08-17 11:52:58
json看起来没问题,所以可能是空行抛出了它。response.text的内容是什么?如果包括空行,则如下所示
json.loads(response.text.strip())可能就够了。
发布于 2021-08-17 11:54:55
您可以使用try/except调试您的错误,如下所示:
    def some_function(data):
       try:
          *enter your success code*
       except:
          *enter in error statement*https://stackoverflow.com/questions/68816779
复制相似问题