用python登录 - megaupload

时间:2011-02-27 16:11:30

标签: python login

我正在尝试修复一个可以登录我的MU帐户并检索一些数据的程序....

我不知道我做错了什么......那就是代码:

#!/usr/bin/env python
import urllib, urllib2, cookielib

username = 'username'
password = 'password'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'password' : password})
opener.open('http://megaupload.com/index.php?c=login', login_data)
resp = opener.open('http://www.megaupload.com/index.php?c=filemanager')
print resp.read()

任何答案的答案!

4 个答案:

答案 0 :(得分:2)

您可以模拟表单的填充。

为此你可以在perl模块WWW :: Mechanize上使用mechanize lib

#!/usr/bin/env python
import urllib, urllib2, cookielib, mechanize

username = 'username'
password = 'password'

br = mechanize.Browser()
cj = cookielib.CookieJar()

br.set_cookiejar(cj)
br.set_handle_robots(False)

br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2) Gecko/20100115 Firefox/3.6')]

br.open('http://www.megaupload.com/?c=login')
br.select_form('loginfrm')

br.form['username'] = username
br.form['password'] = password

br.submit()

resp = br.open('http://www.megaupload.com/index.php?c=filemanager')

print resp.read()

请参阅Use mechanize to log into megaupload

答案 1 :(得分:2)

好吧,我自己实现了它,似乎你只是忘记了一个值 - 这就是为什么我总是使用TamperData或类似的东西来检查我的浏览器发送到服务器的内容 - 比通过HTML更容易和更短。< / p>

无论如何只需将'redir':1添加到你的词典中它就可以了:

import http.cookiejar
import urllib

if __name__ == '__main__':
    cj = http.cookiejar.CookieJar()
    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
    login_data = urllib.parse.urlencode({'username' : username, 'password' : password, 'login' : 1, 'redir' : 1})
    response = opener.open("http://www.megaupload.com/?c=login", login_data)
    with open("test.txt", "w") as file:
        file.write(response.read().decode("UTF-8")) #so we can compare resulting html easily

虽然我必须说我现在要看看机械化和合作 - 我经常做这样的事情,这可能是非常值得的。虽然我不能强调,最重要的帮助仍然是一个浏览器插件,可以让你检查发送的数据;)

答案 2 :(得分:1)

mechanizetwill可能会让您更加幸运,这些运动旨在简化这些流程。否则,我认为你的开场白至少缺少一个重要的组成部分:处理cookie的东西。这是我上次这样做时的一些代码:

# build opener with HTTPCookieProcessor
cookie_jar = cookielib.MozillaCookieJar('tasks.cookies')
o = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cookie_jar)
)

答案 3 :(得分:0)

我的猜测是将c=login名称/值对添加到login_data,而不是将其直接包含在URL上。

你可能也打破了TOS / EULA,但我不能说我在乎这么多。