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
Directorio artículo
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
② por FD captura de paquetes llegamos a los http://zhjw.scu.edu.cn/j_spring_security_check
datos de este URL posterior, como se muestra a continuación, y luego nos fijamos en los parámetros dentro, j_username
texto plano, j_password
se cifra el contenido, en respuesta a adivinar qué archivos debe ser hecha en la página necesaria para responder a
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
③ 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
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
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 PIL
lo
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!
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())