el uso de Python de la sesión en la SCU para conseguir peticiones para lograr la galleta

Exención de responsabilidad:
este blog los lectores con fines de aprendizaje únicos reptiles conocimiento, nada que ver con cualquier medio ilegal para mí, bienvenido a aprender, tengo la interpretación final del código, si los lectores tienen que utilizar uno de los códigos, por favor indique en el autor del comentario: Yang Wenhao desde ésta página Tks! ! .

Este pozo ofertas artículo que había cumplido todos los registros
unidos al extremo el código completo

El primer paso en el análisis de sesión requerido

análisis paramétrico

① En primer lugar, comprobar los datos de inicio de sesión del correo local
Aquí Insertar imagen Descripción
② por FD captura de paquetes llegamos a los http://zhjw.scu.edu.cn/j_spring_security_checkdatos de este URL posterior, como se muestra a continuación, y luego nos fijamos en los parámetros dentro, j_usernametexto plano, j_passwordse cifra el contenido, en respuesta a adivinar qué archivos debe ser hecha en la página necesaria para responder a
Aquí Insertar imagen Descripción
la siguiente figura, nos encontramos con que nuestra contraseña simplemente realizar el cifrado MD5, es muy simple, por lo que la siguiente tarea era conseguir el código de verificación
Aquí Insertar imagen Descripción
③ preguntas sobre el código de verificación, de hecho, hay dos maneras , primero con selenio para simular el comportamiento del navegador, pero esto es demasiado lento, no es lo que queremos, queremos obtener la respuesta que desea por el módulo de peticiones

Los códigos de verificación segundo paso

En primer lugar tenemos que conseguir la petición de dirección código de verificación para revisar los elementos disponibles /img/captcha.jpg
código de verificación
entonces empezamos a escribir código en primer lugar, por supuesto, por no decir la premisa de aquí al solicitar un código de verificación debe traer galleta, en nombre de esta cuenta es su único criterio, oa cuando la solicitud a la cookie inútil, se encontró la fosa! ! !
Así las cosas mejor utilizar la sesión para mantener el estado de sesión

r = session.get('http://202.115.47.141/img/captcha.jpg', headers=headers_for_captcha)
    with open('captcha.jpg','wb+') as f:
        f.write(r.content)

Luego fuimos a abrir la imagen CAPTCHA, encontramos cada ejecución no es lo mismo, OKK, pero si es para que pueda publicar sería un error, aquí es un pozo , que se obtiene de verificación de códigos es muy singular , F12 lo lleve a ver la verdad
código de verificación
que no, volver con solicitudes también llevaron a cabo un número al azar, por lo que ahora acaban de golpear

soup = BeautifulSoup(r.text, 'lxml')
    captcha_url = soup.find("img", id="captchaImg")['src']
    # 链接来自url中算法
    url_captcha = 'http://202.115.47.141' + captcha_url + '?' + str(random.randint(1, 100))

El tercer paso: Log

Así que no, ji, ji problema, al lado sólo se necesita una combinación de parámetros, por supuesto, abrir manualmente cada código de tiempo es particularmente problemático, estamos usando PILlo

data = {
        'j_username': username,
        'j_password': password,
        'j_captcha': captcha
    }
    r = session.post(url_login, headers=headers_for_captcha, data=data)
    return r.request.headers['Cookie']

Dicho programa se está ejecutando de nuevo, el éxito de la derecha, y luego llegó a su fin!
Aquí Insertar imagen Descripción

Apéndice: El código completo

import requests
import hashlib
import random
from PIL import Image

from bs4 import BeautifulSoup


def captcha_get():
    username = '学号'
    password = hashlib.md5(b'密码').hexdigest()
    url = 'http://202.115.47.141'
    url_login = 'http://zhjw.scu.edu.cn/j_spring_security_check'
    session = requests.session()
    headers_for_captcha = {
        'Host': '202.115.47.141',
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3754.400 QQBrowser/10.5.4034.400',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Referer': 'http://202.115.47.141/login?errorCode=badCaptcha',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'zh-CN,zh;q=0.9',

    }
    r = session.get(url, headers=headers_for_captcha)
    soup = BeautifulSoup(r.text, 'lxml')
    captcha_url = soup.find("img", id="captchaImg")['src']
    # 链接来自url中算法
    url_captcha = 'http://202.115.47.141' + captcha_url + '?' + str(random.randint(1, 100))
    r = session.get(url_captcha, headers=headers_for_captcha)
    print(r.url)
    with open('captcha.jpg', 'wb+') as f:
        f.write(r.content)

    try:
        im = Image.open('captcha.jpg')
        im.show()
        im.close()
    except:
        print(u'请到 根目录找到captcha.jpg 手动输入')
    captcha = input("please input the captcha\n>")
    data = {
        'j_username': username,
        'j_password': password,
        'j_captcha': captcha
    }
    r = session.post(url_login, headers=headers_for_captcha, data=data)
    return r.request.headers['Cookie']


if __name__ == '__main__':
    print(captcha_get())

Publicado 82 artículos originales · ganado elogios 235 · Vistas 1,08 millones +

Supongo que te gusta

Origin blog.csdn.net/solitudi/article/details/105074437
Recomendado
Clasificación