• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jimmy

[Ajuda] autenticação/mechanize/wwwTools/outros

12 mensagens neste tópico

Glr,

Estou tentanto começar a usar o mechanize ou o wwwTolls mas n sei onde achar esse modulos.

Perdi uma manha buscando na net, sem resultados...

Enfim... o q eu qro fazer é pegar o conteúdo de uma pagina web e salvar isso em um arquivo... eu achava q era facil mas a pagina q qro exige autenticação e eu n consigo autenticar com a urllib. Como de costume fui pesquisar e achei esses dois modulos q parecem poder ajudar bastante...

Se puderem ajudar a encontra-los ou indicar um meio melhor pra fazer o q eu qro eu ficaria mt grato... vlw :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

error: no commands supplied <Erro acusado no terminal qndo tento instalar> Acho q eh pq uso windows =x

O site q me passaste foi bem informativo e jah esta nos favoritos para consultas hehe mas, novamente n consegui a autenticação, tentei de dois modos indicados lah:

usando urllib2 me eh retornado q o site n precisa de autenticação  :shocking:

jah usando urllib+urllib2+cookiejar o erro retornado foi q uma função interna do arquivo/modulo urllib.py n foi reconhecida  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

import urllib2
import sys
import re
import base64
from urlparse import urlparse

theurl = 'http://www.site.com/index.php'
# if you want to run this example you'll need to supply
# a protected page with your username and password

username = 'user'
password = 'password'            # a very bad password

req = urllib2.Request(theurl)
try:
    handle = urllib2.urlopen(req)
except IOError, e:
    # here we *want* to fail
    pass
else:
    # If we don't fail then the page isn't protected
    print "This page isn't protected by authentication."
    sys.exit(1)

if not hasattr(e, 'code') or e.code != 401:
    # we got an error - but not a 401 error
    print "This page isn't protected by authentication."
    print 'But we failed for another reason.'
    sys.exit(1)

authline = e.headers['www-authenticate']
# this gets the www-authenticate line from the headers
# which has the authentication scheme and realm in it


authobj = re.compile(
    r'''(?:\s*www-authenticate\s*?\s*(\w*)\s+realm=['"]([^'"]+)['"]''',
    re.IGNORECASE)
# this regular expression is used to extract scheme and realm
matchobj = authobj.match(authline)

if not matchobj:
    # if the authline isn't matched by the regular expression
    # then something is wrong
    print 'The authentication header is badly formed.'
    print authline
    sys.exit(1)

scheme = matchobj.group(1)
realm = matchobj.group(2)
# here we've extracted the scheme
# and the realm from the header
if scheme.lower() != 'basic':
    print 'This example only works with BASIC authentication.'
    sys.exit(1)

base64string = base64.encodestring(
                '%s:%s' % (username, password))[:-1]
authheader =  "Basic %s" % base64string
req.add_header("Authorization", authheader)
try:
    handle = urllib2.urlopen(req)
except IOError, e:
    # here we shouldn't fail if the username/password is right
    print "It looks like the username or password is wrong."
    sys.exit(1)
thepage = handle.read()

fiz soh uma copia do q tem no site pra testar, mas n foi mt bem...

=(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mudaste o URL certo? Que problemas em específico é que te dá?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, mudei =D

try:
    handle = urllib2.urlopen(req)
except IOError, e:
    # here we *want* to fail
    pass
else:
    # If we don't fail then the page isn't protected
    print "This page isn't protected by authentication."
    sys.exit(1)

ele cai no else dessa excessao...

Eu acho q a autenticação é manipulada por cookies ... mas isso eh só suposição.

Tetei usar o codigo ( do mesmo site ) q usa cokkiejar e dessa vz o erro foi numa função interna ( url.strip() ) da urllib se n me engano...

Ele retorna o errro q essa função n existe =x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

http://phpfi.com/356871

"""Eu n tenho o clientcookie instalado tmb entao no codigo é usado a urllib2"""

agora consegui executa-lo sem problemas mas a autenticação n parece feita =x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem dizeres qual é o site, é difícil de ajudar. Há milhares de possibilidades de fazer um sistema de autenticação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora