uso do sinal SCU em Python para obter solicitações para alcançar Cookies

Disclaimer:
este blog leitores fins de aprendizagem únicos répteis conhecimento, nada a ver com quaisquer meios ilegais para mim, bem-vindo para aprender, tenho a interpretação final do código, se os leitores precisam usar um dos códigos, por favor, indicar no comentário do autor: Yang Wenhao desta página Tks! ! .

Este poço artigo trata eu tinha conhecido todos os registros
anexados ao fim o código completo

O primeiro passo na análise Login obrigatório

análise paramétrica

① Em primeiro lugar, verifique os dados de login do correio local
Aqui Insert Picture Descrição
② por captura de pacotes FD que chegamos aos http://zhjw.scu.edu.cn/j_spring_security_checkdados deste URL post, como mostrado abaixo, e então olhamos para os parâmetros dentro, j_usernametexto simples, j_passwordque é criptografada com conteúdo, em resposta a adivinhar quais arquivos devem ser feitas na página precisamos responder
Aqui Insert Picture Descrição
a figura a seguir, vemos que a nossa senha simplesmente executar a criptografia md5, é muito simples, de modo a próxima tarefa era fazer com que o código de verificação
Aqui Insert Picture Descrição
③ perguntas sobre o código de verificação, na verdade, existem duas maneiras , primeiro com selênio para o comportamento do navegador de simulação, mas isso é muito lento, não o que queremos, queremos obter a resposta que você quer pelo módulo de solicitações

Os códigos de verificação segunda etapa

Primeiro temos de obter o pedido de endereço código de verificação para rever os elementos disponíveis /img/captcha.jpg
código de verificação
, em seguida, começar a escrever código em primeiro lugar, é claro, para dizer a premissa aqui ao solicitar um código de verificação deve trazer biscoito, em nome desta conta é o seu único critério, ou para quando a solicitação para o cookie inútil, o poço foi encontrado! ! !
Sendo esse o caso melhor usar a sessão para manter o estado da sessão

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)

Depois fomos para abrir a imagem CAPTCHA, encontrado cada corrida não é o mesmo, okk, mas se é assim que você pode publicá-la seria errado, aqui é um poço , que você obtenha verificação códigos é muito original , F12 levá-lo para ver a verdade
código de verificação
que não, voltar com pedidos também foi palco de um número aleatório, então agora nós apenas vencê-lo

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))

O terceiro passo: Log

Portanto, não hee problema hee, junto só você precisa de uma combinação de parâmetros, é claro, abrir manualmente cada código de tempo é particularmente problemático, estamos usando PIL-o

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']

Tal programa está sendo executado novamente, o sucesso da direita, em seguida, chegou ao fim!
Aqui Insert Picture Descrição

Apêndice: O 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 artigos originais · Louvor obteve 235 · Visualizações 1,08 milhões +

Acho que você gosta

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