用python写一个提取token或cookies加到headers里提交请求的方法

应用场景

    场景是这样的,有些提交API请求是需要携带登录者的身份信息的,如cookies、token等,那么当水平不够没办法逆向的时候,可以用一个笨的方法:
    1、先用selenium进行正常登录
    2、想办法获取登录后的cookies,token等
    3、创建headers,把获取的cookies或token带入
    4、提交post请求
    写了个一小段用selenium登录,然后获取cookies里的session的代码,供初学者参考

上代码

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('网址')
driver.implicitly_wait(20)
# 隐式等待网页加载20秒
browser.find_element(By.XPATH, '//*[@id="userName"]').send_keys('用户名')
browser.find_element(By.XPATH, '//*[@id="password"]').send_keys('密码')
# 自动输入用户名和密码
try:
    browser.find_element(By.XPATH, '//*[@id="root"]/div/div[2]/div/div/div[2]/form/div[4]/div/div/span/button').click()
    # 点击登录
    browser.find_element(By.XPATH, '//*[@id="/assetManage$Menu"]/li[2]/a')
    # 这一步很关键,随便定位一下登录后的元素,为了获取登录后返回的headers
except:
    pass

token = browser.execute_script('return window.localStorage.getItem("token")')
# 用selenium包装js代码获取window.localStorage里的token
print(token)
cookies = browser.get_cookies()
# 获取cookies,返回的是一个列表
for i in cookies:
    if i['name'] == 'pcmgr_session':
        pcmgr_session = i['value']
# 遍历获取需要的信息
        print(pcmgr_session)

注:代码中xpath部分需要根据自己访问的网站进行修改

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Python 登录 CSDN,清除 token,使用 cookies 发送 POST 请求编辑个人资料,获取返回结果到本地的示例代码: ```python import requests from bs4 import BeautifulSoup # 登录 CSDN login_url = 'https://passport.csdn.net/v1/register/pc/login/doLogin' headers_login = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', 'Referer': 'https://passport.csdn.net/login?code=public' } data_login = { 'loginType': '1', 'pwdOrVerifyCode': 'your_password', 'userIdentification': 'your_username', 'uaToken': '' } session = requests.session() response_login = session.post(login_url, headers=headers_login, data=data_login) # 清除 token soup = BeautifulSoup(response_login.text, 'html.parser') token = soup.find('input', attrs={'name': 'csrfmiddlewaretoken'})['value'] session.cookies.clear() # 使用 cookies 发送 POST 请求编辑个人资料 profile_url = 'https://i.csdn.net/settings/profile' headers_profile = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', 'Referer': 'https://i.csdn.net/settings/profile' } data_profile = { 'csrfmiddlewaretoken': token, 'nickname': 'new_nickname', 'email': '[email protected]', 'realname': 'new_realname', 'gender': '1', 'birthday': '1990-01-01', 'company': 'new_company', 'job_title': 'new_job_title', 'phone': 'new_phone', 'qq': 'new_qq', 'wechat': 'new_wechat', 'weibo': 'new_weibo', 'github': 'new_github', 'gitee': 'new_gitee', 'description': 'new_description', 'blog': 'new_blog', 'blog_rss': 'new_blog_rss', 'blog_title': 'new_blog_title', 'blog_tagline': 'new_blog_tagline', 'blog_category': 'new_blog_category', 'blog_keywords': 'new_blog_keywords' } response_profile = session.post(profile_url, headers=headers_profile, data=data_profile) # 获取返回结果到本地 with open('profile.html', 'w', encoding='utf-8') as f: f.write(response_profile.text) ``` 注意,代码中的 `your_username` 和 `your_password` 需要替换成你自己的 CSDN 账号和密码,`new_nickname`、`[email protected]` 等字段也需要根据实际情况修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值