m0_62188788 2022-10-26 21:34 采纳率: 100%
浏览 275
已结题

如何自动获取token

目前通过浏览器——开发者工具获取网页链接,但其中关键链接的请求头中
authorizationtoken的内容都是突然出现的,在该条链接之前有两次option的预请求,请问如何通过python自动获取到authorizationtoken的内容。

链接是 https://www.sgx.com/zh-hans/securities/company-announcements

F12获取到的列表如下:

img

img

img

我使用上图这个authorizationtoken:
OepJg2iyYwqB7XGSh/98cy2UbED0nu1VwdKEInz0PzSSIKN5Bs2KIqWmj20sE04hioC20wtC5MLBDqi/2ttJZQsAmBrvnBJbVQMyJLosouAjwjMThSQLfbNqX5yoyNih
通过python,写好相应内容,是能获取到内容的,但这个authorizationtoken只是临时性的,不可能每次F12,获取到authorizationtoken再手动运行爬虫。

我知道很多网站请求时或者登陆时会有相应字段,但我需要的这个网址,我按上面的办法是没有token的,所以想请教下大家,有什么办法自动获取到我所说的地址里的authorizationtoken吗?谢谢!

  • 写回答

7条回答 默认 最新

  • aabond 2022-10-27 10:32
    关注

    经过对压缩混淆的js代码进行分析,得到了加密函数,具体流程如下

    1. 首先访问 https://www.sgx.com/config/appconfig.json?v=e1be1215 获取"CMS_VERSION"
    2. 再访问 https://api2.sgx.com/content-api/?queryId=%22CMS_VERSION%22:we_chat_qr_validator ,得到"qrValidator"
    3. 接着用加密函数对qrValidator加密,就可以得到 authorizationtoken
    authorizationtoken = qrValidator.replace(/[a-zA-Z]/g,(function(t){var e=t.charCodeAt(0)+13;return String.fromCharCode((t<="Z"?90:122)>=e?e:e-26)}))) 
    

    python代码如下

    import requests
    import re
    
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
     
    response = requests.get("https://www.sgx.com/config/appconfig.json?v=e1be1215", headers = headers)
    CMS_VERSION = response.json()["CMS_VERSION"]
    
    response = requests.get("https://api2.sgx.com/content-api/?queryId=" + CMS_VERSION + ":we_chat_qr_validator", headers = headers)
    qrValidator = response.json()["data"]["qrValidator"]
    
    def encrypt(t):
        e = ord(t) + 13
        code = e if ((90 if t<="Z" else 122) >=e) else e-26
        return chr(code)
    
    print(qrValidator)
    authorizationtoken=""
    for t in qrValidator:
        authorizationtoken += (encrypt(t) if re.match("[a-zA-Z]", t) else t)
    print(authorizationtoken)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 修改了问题 10月26日
  • 修改了问题 10月26日
  • 展开全部

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费