新浪云 安装wordpress,深圳优化排名公司,比价网站开发,百度竞价托管费用准备工作
1. 了解 JWT 相关知识
2. 安装 requests 库#xff0c;并了解其基本使用
案例介绍
爬取网站#xff1a; https://login3.scrape.center/ 用户名和密码是#xff1a; admin
模拟登录
基于 JWT 的网站通常采用的是前后端分离式#xff0c; 前后端的数据传输依…准备工作
1. 了解 JWT 相关知识
2. 安装 requests 库并了解其基本使用
案例介绍
爬取网站 https://login3.scrape.center/ 用户名和密码是 admin
模拟登录
基于 JWT 的网站通常采用的是前后端分离式 前后端的数据传输依赖于 Ajax , 登录验证依赖于 JWT 这个本事就是 token 的值 如果 JWT 经验证是有效的 服务器就会返回相应的数据。
打开开发者工具执行登录操作查看登录过程产生的数据 可以看出登录时的请求 URL 为https://login3.scrape.center/api/login 是通过 Ajax 请求的 请求体式 JSON 格式的数据 而不是表单数据 返回状态码为 200
来看一下 token 字段 token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzIyOTYwOTk4LCJlbWFpbCI6ImFkbWluQGFkbWluLmNvbSIsIm9yaWdfaWF0IjoxNzIyOTE3Nzk4fQ.qkSWgwMI_0MJs7U5y1bAaUyQW17O09i_f5s7E0C1GVc 由 . 点 把整个字段分为 3 部分Header , Payload 和 Signature 具体介绍在上一节
写文章-CSDN创作中心 而在后续发出用于获取数据的 Ajax 请求中 请求头里多了一个 authorization 字段 其内容为 jwt 加上刚才的 token 字段 返回结果也是 JSON 格式的数据其内容也是网站首页内容那么现在模拟登录的思路也就有了
1. 模拟登录请求带上必要的信息 获取返回的JWT
2. 之后发送请求时 在请求头里面加上 authorization 字段 值就是 JWT 对应的内容 import requests
from urllib.parse import urljoinBASE_URL https://login3.scrape.center/
LOGIN_URL urljoin(BASE_URL, /api/login)
INDEX_URL urljoin(BASE_URL, /api/book)
USERNAME admin
PASSWORD adminresponse_login requests.post(LOGIN_URL, json{username: USERNAME,password: PASSWORD
})data response_login.json()
print(Response JSON, data)
jwt data.get(token)
print(JWT, jwt)headers {Authorization: fjwt {jwt}}
response_index requests.get(INDEX_URL, params{limit: 18,offset: 0,
}, headersheaders)
print(Response Index, response_index.status_code)
print(Response URL, response_index.url)
print(Response Data, response_index.json())Response JSON {token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzIyOTcyMjg2LCJlbWFpbCI6ImFkbWluQGFkbWluLmNvbSIsIm9yaWdfaWF0IjoxNzIyOTI5MDg2fQ.ac63vnW9JF7U6DoZgIJd0dmqLc9FchrI_GbjDWjLZas} JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzIyOTcyMjg2LCJlbWFpbCI6ImFkbWluQGFkbWluLmNvbSIsIm9yaWdfaWF0IjoxNzIyOTI5MDg2fQ.ac63vnW9JF7U6DoZgIJd0dmqLc9FchrI_GbjDWjLZas Response Index 200 Response URL https://login3.scrape.center/api/book/?limit18offset0 Response Data {count: 9200, results: [{id: 34473697, name: R数据科学实战工具详解与案例分析 这里我们先定义了登录接口和获取数据的接口分别是 LOGIN_URL 和 INDEX_URL 接着调用 requests 的 post 方法进行了模拟登录。 由于这了提交的数据是 JSON 格式 所以使用 json 参数来传递数据。接着获取并打印出了返回结果中包含的 JWT 。 之后构造请求头 设置 Authorization 字段并传入刚获取的 JWT 这样就成功获取数据了