- 申明
- 本文主要自己对爬虫的一个学习,提供的可操作性不得用于任何商业用途和违法违规场景。
- 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。
- 如有侵权,请联系我进行删除。
案列网站
https://www.gm99.com/
打开F12,找到事件监听器
会有几个事件,一眼过去感觉click就是点击事情,登入事件(如果不是就一个一个看下)
可以试着几个移除,如何点击登入,看是否会发出提示,如果没有发出提示,就说明上一个移除的就是登入的监听器。
这里目前没有移除掉
发现移除掉之后就点击登入没有反应,这个时候得出结论,刚刚移除掉的就是登入事件监听事件
刷新页面点击进去,并且打断点
结论:发现点击了并没有进入断点
网络请求调试
根据提醒框,找到请求
找到url
根据URL去之前dom找到的js进行搜索,搜索到了之后打断点
测试:发现输入信息进入了断点(验证码在输入的时候需要正确)
传入的参数
发现t.password是我们输入的密码,如何还是一个s是当前的时间戳,传入了a.encode里面
继续打点进行调试,一眼过去明显的RSA加密,然后还进行URL编码
测试
python实现
RSA加密
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
from base64 import b64encode
def rsa_encrypt(public_key: str, message: str) -> str:
public_key = serialization.load_pem_public_key(
public_key.encode(),
backend=default_backend()
)
encrypted = public_key.encrypt(
message.encode(),
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
return b64encode(encrypted).decode('utf-8')
# 秘钥:
public_key = """
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDq04c6My441Gj0UFKgrqUhAUg+kQZeUeWSPlAU9fr4HBPDldAeqzx1UR92KJHuQh/zs1HOamE2dgX9z/2oXcJaqoRIA/FXysx+z2YlJkSk8XQLcQ8EBOkp//MZrixam7lCYpNOjadQBb2Ot0U/Ky+jF2p+Ie8gSZ7/u+Wnr5grywIDAQAB
-----END PUBLIC KEY-----
"""
一个是时间一个是我的密码
message = '1717814299393|12312313'
encrypted_message = rsa_encrypt(public_key, message)
print(encrypted_message)
print(len(encrypted_message))
URL编码
from urllib.parse import quote
def encodeURIComponent(s):
return quote(s, safe='~()*!.\'')
# Example usage:
test = 'I1PyyYiqcjArtZq3RC9Ww6oxMSMBhVEGWZNVrkFgHXmHlQPHGPOXLad46EX7hwhGD4nVnJbkKv5vZVIGOZj4uR3Dc5CFXcJ38fpa3u4SO6ImLkIAbLzytw8sIKVolcvx4JstgjNCwAiU1vJ+T/7eYYzLpwE0HO0QwE0fcnP+fXg='
encoded_string = encodeURIComponent(test)
print(encoded_string)
print(len(encoded_string))