2

我正在尝试登录 Moodle 网站,但它返回“您尚未登录”页面,这意味着身份验证不成功。我究竟做错了什么?我忘记设置参数了吗?请不要推荐机械化。我想了解它是如何在没有库的情况下工作的。我的代码:

import cookielib, urllib, urllib2, getpass

# not the actual site, but still a Moodle example
theurl = 'https://moodle.pucrs.br/login/index.php'

username= raw_input("\tusername: ")
password= getpass.getpass("\tpassword: ")

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()

passman.add_password(None, theurl, username, password)

cj = cookielib.CookieJar()
opener = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPBasicAuthHandler(passman),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cj),
)

urllib2.install_opener(opener)


# set headers
opener.addheaders = [
    ('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; '
                   'Windows NT 5.2; .NET CLR 1.1.4322)'))
]

try:
    #req = opener.open(theurl, data)
    req = opener.open(theurl)
except IOError, e:
    print "It looks like the username or password is wrong."

# == test ==

# visit "my courses":
req = opener.open("https://moodle.pucrs.br/my/‎")
content = ''.join(req.readlines())
print(content)
4

1 回答 1

1

以下是我使用 urllib 登录网站的方法:

self.cookieJar = cookielib.LWPCookieJar()
self.opener = urllib2.build_opener(


    urllib2.HTTPCookieProcessor(self.cookieJar),
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0))

self.opener.addheaders = [('User-agent', "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36")]


forms = {"username": #username here ,
         "password": #password here
        }

data = urllib.urlencode(forms)
req = urllib2.Request('http://moodle.pucrs.br/login/index.php',data)
res = self.opener.open(req)
self.login_html = res.read()

如果您在登录页面的 HTML 中查看这两个表单的名称,password然后username您想发送一个请求,然后使用您制作的开启器打开该请求

测试一下,告诉我它是否有效!

于 2013-10-17T04:30:03.407 回答