Índice:
- Etapa 1: Reúna os materiais
- Etapa 2: Encontre os cabeçalhos necessários para criar uma sessão
- Etapa 3: preparar o código
- Etapa 4: Envie os sinais corretos
- Etapa 5: Cookies mecanizados
- Etapa 6: Chave para o coração
Vídeo: Aranha um site Ajax com um formulário de login assíncrono: 6 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:40
O problema: as ferramentas de Spidering não permitem autenticação de login AJAX.
Este instrutível mostrará como fazer o login por meio de um formulário AJAX usando Python e um módulo chamado Mechanize. Spiders são programas de automação da web que estão se tornando uma forma cada vez mais popular para as pessoas coletarem dados online. Eles rastejam pela web reunindo materiais preciosos para abastecer as empresas da web mais poderosas que existem. Outros rastejam e reúnem conjuntos específicos de dados para melhorar a tomada de decisões, deduzir o que está "na moda" ou encontrar as rotas de viagem mais baratas. Spiders (rastreadores da web, webbots ou scrapers de tela) são ótimos para transformar a gosma de HTML em alguma aparência de dados inteligentes, mas temos um problema quando se trata de páginas da web habilitadas para AJAX que têm sessões habilitadas para JavaScript e cookies que não são navegáveis com o normal conjunto de ferramentas de spidering. Neste instrutível estaremos acessando nossa própria página de membro em pubmatic.com. Essas etapas mostrarão um método a seguir, mas sua página será diferente. Divirta-se!
Etapa 1: Reúna os materiais
Você precisará começar a complementar seus recursos de programação. Você precisará dos seguintes programas. Use seus guias para ajudá-lo a instalar estes… Instalar FirebugÉ um addonInstall PythonIr para: python.orgIr para: python.orgInstalar o Módulo MechanizeGet MechanizeGet MechanizeOutras ferramentas úteis do Spidering: BeautifulSoup
Etapa 2: Encontre os cabeçalhos necessários para criar uma sessão
Uma aranha bem elaborada acessará uma página da web como se fosse um navegador controlado por um ser humano, mantendo ocultas as pistas sobre sua verdadeira origem. Parte da interação entre navegadores e servidores acontece por meio de solicitações GET e POST que podem ser encontradas nos cabeçalhos (essas informações raramente são exibidas em um navegador, mas são muito importantes). Você pode ver algumas dessas informações pressionando Ctrl I (no firefox) para abrir a janela Informações da página. Para se disfarçar como um navegador moderado, você deve se identificar usando as mesmas credenciais. Se você tentasse entrar no pubmatic com o javascript desabilitado em seu navegador, não iria muito longe, pois os redirecionamentos são feitos por javascript. Portanto, considerando que a maioria dos navegadores spider não possui intérpretes javascript, teremos que fazer o login por meio de uma rota alternativa. Vamos começar obtendo as informações do cabeçalho enviadas do navegador quando você clica em enviar. Se este fosse um login de navegador comum, você usaria o Mechanize para preencher o formulário e clicar em enviar. Os formulários de login normais são encapsulados em uma … tag e o Mechanize seria capaz de enviar isso e pesquisar a próxima página sem problemas. Como não temos uma tag de formulário preenchida, a função de envio está sendo controlada por javascript. Vamos verificar a função submitForm do pubmatic. Para fazer isso, primeiro abra a página da web no firefox e ative o firebug clicando no firefly no canto inferior direito. Em seguida, clique na guia de script, copie todo o código que aparecer e cole-o em seu software de edição de texto favorito. Em seguida, você pode excluir todo o código, exceto a função submitForm. Ele começa com a função "submitForm (theform) {" e tudo entre isso e as funções que fecham a chave "}". Ao analisar essa função muito primitivamente, notamos que alguma autenticação acontece trazendo de volta uma variável chamada xmldoc que está sendo analisada como xml. Este é um recurso chave do AJAX, ele pesquisou o servidor e trouxe de volta algum documento XML que contém uma árvore de informações. O nó session_id contém o session_id se a autenticação foi bem sucedida, você pode dizer isso olhando para este trecho de código: "if (session_id! = Null) {// login bem-sucedido". Agora, queremos evitar que esse bit de javascript nos leve a qualquer lugar, para que possamos ver o que está sendo postado no servidor durante a autenticação. Para fazer isso, comentamos todos os redirecionamentos de janela que se parecem com: "window.location =…". Para comentar isso, adicione barras duplas antes delas, como: "//window.location …" isso evita que o código seja executado. Você pode baixar o arquivo Javascript abaixo, que já contém essas edições. Copie e cole esse bit editado de javascript no lado direito da janela do console e clique em executar. Isso substitui a função javascript já na página com nossa nova versão. Agora, quando você preencher suas credenciais e clicar em enviar, deverá ver as informações do cabeçalho POST e GET preencher o console, mas você não irá a lugar algum. As informações do POST são as informações disparadas para o servidor pelas funções AJAX, você deseja ser o máximo assim quanto possível, copie e cole essas informações em um bloco de notas.
Etapa 3: preparar o código
Antes de adicionarmos os novos cabeçalhos que encontramos, vamos criar um código Python de login do Mechanize com modelo. Estamos fazendo isso por dois motivos: primeiro, temos um componente que funciona para adicionar coisas novas e, segundo, para ver como você normalmente faria o login em uma página da web não AJAX. Abra o bloco de notas ou equivalente e copie e cole o Segue. Quando terminar, salve-o como youfilename.py em algum lugar que possa encontrar. #! / Usr / bin / python # - * - coding: utf-8 - * - # Comece com suas importações de módulo: from mechanize import Browser #Create your instância do navegador por meio da chamada de função Browser (); br = Browser () # Configure o navegador de modo que ignore as solicitações spiders.txt # Faça isso com cuidado, se a página da web não gostar de spiders, eles podem ficar chateados se encontrarem você lábr.set_handle_robots (False) #Abra a página que deseja acessar tobr.open ("https://pubmatic.com/04_betasignin.jsp") # Como sei o nome do formulário, posso simplesmente selecionar o formulário pelo nomebr.select_form ("login") # Usando os nomes dos elementos do formulário, eu insiro os nomes dos elementos do formuláriobr ['email'] = "[email protected]" br ['senha'] = "Asquid22" # br.submit () envia o formulário e puxa a página resultante, você cria uma nova instância do navegador # resposta abaixo contém o pageresponse = br.submit () # Isso imprimirá o corpo da página recebida # print response.read ()
Etapa 4: Envie os sinais corretos
O Mechanize tem uma função fácil de adicionar cabeçalhos aos cabeçalhos POST, isso nos permitirá aparecer no mesmo navegador que você usou para acessar a página pela primeira vez. Abra o arquivo com os cabeçalhos que você encontrou usando o Firebug e edite esse arquivo de texto para corresponder. Substitua tudo nas aspas pelo item adequado da lista de cabeçalhos: USER_AGENT = "Mozilla / 5.0 (X11; U; Linux i686; tr-TR; rv: 1.8.1.9) Gecko / 20071102 Pardus / 2007 Firefox / 2.0.0.9" HOST = "pubmatic.com" ACCEPT = "text / xml, application / xml, application / xhtml + xml, text / html; q = 0,9, texto / simples; q = 0,8, imagem / png, * / *; q = 0,5 "ACCEPT_LANGUAGE =" en-us, en; q = 0,5 "ACCEPT_ENCODING =" gzip, esvaziar "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 "KEEP_ALIVE =" 300 " CONNECTION = "keep-alive" CONTENT_TYPE = "application / x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.1212104087.201; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (direta) | utmcsr = (direta) | utmcmd = (nenhum); JSESSIONID = 60F194BE2A5D31C3E8618995EB82C3C1. TomcatTwo; UTMC = 103266945 "PRAGMA =" no-cache "CACHE_CONTROL =" no-cache "Isso cria um conjunto de variáveis que você pode usar para anexar ao cabeçalho ing este código: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Aceitar", ACCEPT)] br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)] br.add_headers = [("Accept-Encoding", ACCEPT_ENCODING)] br.add_headers = [("Accept-Charset", ACCEPT_CHARSET)] br.add_header = [("Keep-Alive ", KEEP_ALIVE)] br.add_headers = [(" Connection ", CONNECTION)] br.add_header = [(" Content-Type ", CONTENT_TYPE)] br.add_header = [(" Referer ", REFERER)] br.add_header = [("Comprimento do conteúdo", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Agora, quando chamarmos a função de abertura de página, os cabeçalhos também serão enviados para o servidor. br.open ("https://pubmatic.com/04_betasignin.jsp")
Etapa 5: Cookies mecanizados
Esta etapa ocorre porque mecanizar automatiza o manuseio de cookies, mas é importante saber o que está acontecendo:
Quando o formulário é enviado, você tem os cabeçalhos corretos, como se tivesse enviado usando a função javascript. O servidor então autentica essas informações e gera um ID de sessão e o salva em um cookie se o nome de usuário e a senha estiverem corretos. A boa notícia é que o Mechanize come e regurgita cookies automaticamente, então você não precisa se preocupar com o envio e recebimento de cookies. Assim, depois de criar um ID de sessão que funcione, você poderá entrar na seção exclusiva para membros do site.
Etapa 6: Chave para o coração
Agora que adquirimos um ID de sessão e o Mechanize o salvou em seus cookies, podemos seguir o javascript para ver aonde precisamos ir. Olhando dentro de "if (session_id! = Null) {// login bem-sucedido" para ver onde ir em caso de sucesso. Olhando para o código de realocação da janela: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp "+"? V = "+ Math.random () * 10000; " vemos que precisamos ir a um site localizado em https://pubmatic.com/05_homeloggedin.jsp?v=algum número aleatório. Então, vamos apenas criar um número aleatório falso para inserir e criar uma nova instância do navegador para ler a página recém-aberta: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") E isso deve seja isso. Seu código agora está completo, usando os cabeçalhos adequados e o manipulador de cookies mecanizado, podemos agora acessar as entranhas do pubmatic. Abra o terminal, carregue o pacote python abaixo e faça o login. Para fazer isso, digite python2.5 e, em seguida, o caminho do arquivo para o arquivo.py.
Recomendado:
DIY -- Como fazer um robô aranha que pode ser controlado usando um smartphone usando o Arduino Uno: 6 etapas
DIY || Como fazer um robô aranha que pode ser controlado com smartphone usando o Arduino Uno: Ao fazer um robô aranha, pode-se aprender muitas coisas sobre robótica. Como fazer robôs é divertido e também desafiador. Neste vídeo vamos mostrar a vocês como fazer um robô aranha, que podemos operar usando nosso smartphone (Androi
Aranha gigante de LED piscando: 13 etapas
Giant Flashing LED Spider: Danger é meu nome do meio e eu queria fazer algo legal e tecnológico para o concurso de Halloween - somos engenheiros iniciantes, então achamos que deveríamos ser capazes de montar algo legal. O que descobrimos foi isto: uma aranha com oito olhos LED
Robô aranha quadrúpede - GC_MK1: 8 etapas (com imagens)
Robô aranha quadrúpede - GC_MK1: O robô aranha também conhecido como GC_MK1 se move para frente e para trás e também pode dançar dependendo do código carregado no Arduino. O robô usa 12 micro servo motores (SG90); 3 para cada perna. O controlador usado para controlar os servo motores é um Arduino Nan
Faça um formulário de bobina de rádio de cristal: 7 etapas
Faça um formulário de bobina de rádio de cristal: Este instrumento irá ajudá-lo a fazer um tubo forte e firme no qual enrolar uma bobina de fio. Os rádios de cristal, ou rádios de “trincheira”, ainda são divertidos, cem anos depois que meninos e meninas começaram a fabricá-los nos primeiros anos do rádio. Embora muitas coisas
Criando um formulário da web: 6 etapas
Criando um formulário da web: Esta é uma instrução simples sobre como fazer um formulário da web. Esta seria uma pequena introdução sobre como fazer um site e como colocar conteúdo nele e o que pode ser expandido no futuro