JWT 模拟登录
分析目标
打开开发者工具,登录目标网站JWT登录地址
从图中可以看出请求API为https://login3.scrape.center/api/login
,请求体为JSON格式的数据,而不是表单
再看响应结果,可以看出响应也是Json格式的数据,包含token数据
翻下一页,可以看出请求头中多个一个Authorization字段,值就是token数据
确定思路
- 模拟登录请求,带上登录信息,获取返回的JWT
- 之后请求的时候加上Authorization字段,值就是JWT对应的内容
代码实现
import requests
from urllib.parse import urljoin
# url和登录信息
BASE_URL = 'https://login3.scrape.center/'
LOGIN_URL = urljoin(BASE_URL, '/api/login')
INDEX_URL = urljoin(BASE_URL, '/api/book')
USERNAME = 'admin'
PASSWORD = 'admin'
# 首页登录
response_login = requests.post(LOGIN_URL, data={
'username': USERNAME,
'password': PASSWORD
})
data = response_login.json()
print('Response Json', data)
# 获取token
jwt = data.get('token')
print('JWT', jwt)
# 设置headers,Authorization值为token的值
headers = {
'Authorization': f'jwt {jwt}'
}
# 请求其他页面
response_index = requests.get(INDEX_URL, params={
'limit': 18,
'offset': 0
}, headers=headers)
# 结果
print("Response Status", response_index.status_code)
print("Response URL", response_index.url)
print("Response DATA", response_index.json())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通