Python 使用 requests 模拟接口请求,登录接口会返回一个 token ,将这个 token 放入第二个接口请求头 authorize 中即可返回数据。登录接口响应体的 content-type: text/html; charset=UTF-8 ,我使用以下代码解码:
response_json = json.loads(response.text)
token = response_json["accessToken"]
print(token)
将得到的 token 放入第二个接口的请求头中,按道理应该可以返回 200 的,但实际返回 403 错误。也就是 token 没通过验证。
诡异的事情来了,我在控制台将 token 输出并复制,然后在代码里将复制的 token 赋值给一个变量,放入第二个接口的请求头中,再次请求竟然返回 200 了。
对比了原始响应的值和 Python 解码后的值完全一样,反复几次都是如此,只要是手动复制的字符串就没问题,放入代码解码后的 token 变量就会 403 。
我都快怀疑人生了,各位大佬,有知道从哪个方面着手排除问题的吗?
token 本身是 base64 编码的,一个实例如下:
eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiSW5kaXZpZHVhbCIsInVzZXJJZCI6IjZSbU9OREZ6QVBBWlgxaTc1TmVDcXc9PSIsImVtYWlsIjoiRjlmNmhYYXlNNVNsRGZMMDFPWFdwNlVpazZ3bnc0bXhLdVowbm9IaXd0eU1FaXRDbVQ4Z2dPUC8zU1QzbzZHWCIsIm5iZiI6MTY5MTIxMzAwMSwiZXhwIjoxNjkxMjE5MDAxLCJpYXQiOjE2OTEyMTMwMDF9.I0gBdO4xM0CPIW0_ifVGnq7PmyDTjXQJeh8iYgqsJ1iOA0-WHNvswN81_pUWQFOVJ9hlP-YM5M5dsLyP7Oc2Xw
编码后的字符串会有几个特殊符号,点、-、_、/ 。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.