凌零 发表于 7 天前

非常入门级别的,刺猬猫免费章节JS解密

相关章节请求:
https://www.ciweimao.com/chapter/ajax_get_session_code

https://www.ciweimao.com/chapter/get_book_chapter_detail_info
首先一眼丁真找到js:https://www.ciweimao.com/resources/js/book-read-min.js
简单的aes,写就对了:
移植到python:import requests
import base64
from Crypto.Cipher import AES

headers = {
    "referer": "https://www.ciweimao.com/chapter/xxx",
}

def decrypt_content(content, keys, access_key):
    t = len(keys)
    m = len(access_key)
   
    k = []
    k.append(keys[(ord(access_key) % t)])
    k.append(keys[(ord(access_key) % t)])
   
    n = content
    for i in range(len(k)):
      n = base64.b64decode(n)
      
      p = k

      j = base64.b64encode(n[:16]).decode('utf-8')
      f = base64.b64encode(n).decode('utf-8')
      cipher = AES.new(
            base64.b64decode(p),
            AES.MODE_CBC,
            iv=base64.b64decode(j)
      )
      
      n = cipher.decrypt(base64.b64decode(f))

      if i < len(k) - 1:
            n = base64.b64encode(n).decode('utf-8')
            n = base64.b64decode(n)
      else:
            padding_length = n[-1]
            n = n[:-padding_length]
   
    return n.decode('utf-8')

def get_chapter_content(chapter_id):
    s = requests.Session()

    url = "https://www.ciweimao.com/chapter/ajax_get_session_code"
    data = {"chapter_id": chapter_id}
   
    try:
      response = s.post(url, headers=headers, data=data)
      chapter_access_key = response.json()['chapter_access_key']
    except Exception as e:
      return None
    url = "https://www.ciweimao.com/chapter/get_book_chapter_detail_info"
    data = {
      "chapter_id": chapter_id,
      "chapter_access_key": chapter_access_key
    }
   
    try:
      response = s.post(url, headers=headers, data=data)
      print(response.text)
      result = response.json()
      chapter_content = result['chapter_content']
      encryt_keys = result['encryt_keys']
      decrypted_content = decrypt_content(chapter_content, encryt_keys, chapter_access_key)
      return decrypted_content
      
    except Exception as e:
      return None

if __name__ == "__main__":
    chapter_id = "111446252"
    content = get_chapter_content(chapter_id)
   
    if content:
      print("解密成功!")
      print(content)
    else:
      print("获取内容失败")


页: [1]
查看完整版本: 非常入门级别的,刺猬猫免费章节JS解密