无法找到链接特定部分的来源

问题描述 投票:0回答:1

我用 python 创建了一个脚本来从网页中抓取某些字段。当我在脚本中使用这个link时,它会生成json格式的所有数据,我可以相应地解析它。

import requests

link = 'https://api-emis.kemenag.go.id/v1/institutions/pontren/public/identity/K1hOenRreVRmaWYwSGVzcERWVFpjZz09'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}

with requests.Session() as s:
    s.headers.update(headers)
    res = s.get(link)
    container = res.json()['results']
    account_bank_holder = container['account_bank_holder']
    organizer_name = container['organizer_name']
    print((account_bank_holder,organizer_name))

但是,问题是我无法弄清楚链接末尾的这部分

K1hOenRreVRmaWYwSGVzcERWVFpjZz09
来自哪里。

这就是我找到链接的方式:

  1. 导航至此网站
  2. 选择2023/2024 Genap
  3. 单击表中的第一项:ACEH
  4. 然后,单击新表中的第一项:ACEH SELATAN
  5. 最后点击新表中的第一项:500311010057

您现在应该已经有了链接,以我上面提到的部分结尾。

问题:最终链接末尾类似

K1hOenRreVRmaWYwSGVzcERWVFpjZz09
的部分来自哪里?

python python-3.x web-scraping python-requests
1个回答
0
投票

因此,开发人员使用了 aes 加密和 Base64 编码。

import base64
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding

def aes_encrypt_cbc(plaintext: str) -> str:
    secret_key = b'a2c36eb2w1em50d6665dc5d61a68b400'
    base64_iv = "ZW1pc0Jhc2U2NElWa2V5cw=="
    iv = base64.b64decode(base64_iv)
    cipher = Cipher(algorithms.AES(secret_key), modes.CBC(iv), backend=default_backend())
    encryptor = cipher.encryptor()
    padder = padding.PKCS7(128).padder()
    padded_plaintext = padder.update(plaintext.encode()) + padder.finalize()
    ciphertext = encryptor.update(padded_plaintext) + encryptor.finalize()
    return base64.b64encode(base64.b64encode(ciphertext).decode().encode()).decode()

institution_id = "175974"
encrypted_text = aes_encrypt_cbc(institution_id)
print("Encrypted: ", encrypted_text)

注意:初始化向量密钥将来可能会改变。!

© www.soinside.com 2019 - 2024. All rights reserved.