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

jimmy

autenticação/mechanize/wwwTools/outros

Recommended Posts

jimmy

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 :cheesygrin:

Share this post


Link to post
Share on other sites
jimmy

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  😲

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

Share this post


Link to post
Share on other sites
jimmy

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

=(

Share this post


Link to post
Share on other sites
jimmy

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

Share this post


Link to post
Share on other sites
djthyrax

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


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.