我正在尝试通过首先登录以下站点来访问数据: https://accessns.nscorp.com/accessNS/login/
它似乎将此请求发送到后端:
请求方式:POST
当我用python发送请求时,我能够用CSRF令牌得到响应。你知道吗
接下来,我想访问:
其中包含以下标题:
有效载荷: {userId:“username”,classCode:“classCode”,stationCode:“stationCode”}
当我试图将授权请求中的CSRF令牌和cookie用于辅助请求时,我的代码失败了,但是当我手动登录到站点,获取令牌/cookie,并将它们硬编码到python中时,代码没有失败。实际上,就secodary请求的头而言,我所需要的只是CSRF令牌和cookies,以获得可行的响应。你知道吗
with requests.Session() as s:
login = {'Id': 'username', 'pwd': 'password'}
auth = s.post('https://accessns.nscorp.com/accessNS/rest/auth/login',
json=login)
headers = {}
headers['CSRFTOKEN'] = auth.json()['response']['token']
headers['Cookie'] = '; '.join('='.join((i.name, i.value)) for i in
auth.cookies)
payload = {'userId': 'username', 'classCode': 'classcode',
'stationCode': 'stationcode'}
url =
'https://accessns.nscorp.com/accessNS/rest/backend/ServicesIndustrial/
services/industrial2/v2/onsite/details'
inv= s.post(url, json=payload, headers=headers)
print(inv.json())
我希望用我请求的数据得到一个json响应,但是,使用我的代码,我得到:
{'time':1559217902355,'message':'对象引用未设置为对象的实例。。参考号:1559217902355,''原因':'无效用户输入','isError':True},在我看来,这似乎是我的头/负载有问题,或者我缺少一个中间步骤。你知道吗
当我硬编码csrf令牌/cookies并且不使用请求会话时,我得到了我想要的响应。你知道吗
算了吧,我的代码运行得很好。原来第二个请求是对错误的URL发出的,这很奇怪,因为我检查过的每个开发人员控制台中都列出了这个URL。你知道吗
相关问题 更多 >
编程相关推荐