使用python-megaupload登录

使用python-megaupload登录,python,login,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_d

我正在尝试修复一个程序,它可以登录到我的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()

谢谢你的回答

我的猜测是将
c=login
name/value对添加到登录数据中,而不是直接包含在URL中


您可能也破坏了TOS/EULA,但我不能说我有多在乎。

我的猜测是将
c=login
name/value对添加到登录数据中,而不是直接包含在URL上


您可能也违反了TOS/EULA,但我不能说我有多在乎。

您可能会更幸运地使用或设计用于简化此类流程。否则,我认为你的开场白至少缺少一个重要的组成部分:处理cookies的东西。下面是我上次做这件事时的一些代码:

# 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)
)

您可能更幸运地使用或设计用于简化这些类型的流程。否则,我认为你的开场白至少缺少一个重要的组成部分:处理cookies的东西。下面是我上次做这件事时的一些代码:

# 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)
)

您可以模拟表单的填充

为此,您可以使用基于perl的模块WWW::Mechanize

#!/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()

请参见

您可以模拟表单的填充

为此,您可以使用基于perl的模块WWW::Mechanize

#!/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()

请参见

好的,我只是自己实现了它,您似乎忘记了一个值-这就是为什么我总是使用篡改数据或类似的东西来检查我的浏览器发送到服务器的内容-比查看HTML更简单、更短

总之,只需在dict中添加“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

尽管我必须说我现在就要看一看mechanize和co——我经常做这样的事情,这可能是非常值得的。尽管我不能强调的是,最重要的帮助仍然是一个浏览器插件,它允许您检查发送的数据;)

好吧,我只是自己实现了它,而你似乎忘记了一个值——这就是为什么我总是使用篡改数据或类似的东西来检查我的浏览器发送到服务器的内容——比通过HTML更简单、更简短

总之,只需在dict中添加“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

尽管我必须说我现在就要看一看mechanize和co——我经常做这样的事情,这可能是非常值得的。尽管我不能强调的是,最重要的帮助仍然是一个浏览器插件,它允许您检查发送的数据;)

服务条款/最终用户许可协议。它可能在网站上的某个地方说你不应该做你正在做的事情。服务条款/最终用户许可协议。它可能在网站上的某个地方说,你不应该做你正在做的事情。“否则,我认为你的开瓶器至少缺少一个重要的组成部分:处理cookies的东西。”CookieJar不会处理得很好吗?为什么他需要什么特别的东西?不要相信我的话,但我想当我上次这么做的时候,我看到了Mozilla风格的饼干罐,因为它在存储凭证方面做得更好。“否则,我认为你的开场白至少缺少一个重要的组件:处理饼干的东西。”CookieJar会处理得很好吗?为什么他需要什么特别的东西呢?别相信我的话,但我想当我上次这么做的时候,我看到了Mozilla风格的饼干罐,因为它在存储凭证方面做得更好。他们返回的错误是什么?另外,您是否尝试过设置用户代理?没有错误!它只是再次打印登录页面:(您是否检查了HTTP参数,因此您模拟了浏览器用户代理等,而不是其他内容。他们返回的错误是什么?此外,您是否尝试设置用户代理?没有错误!它只是再次打印登录页面:(您是否检查了HTTP参数,因此您模拟了浏览器用户代理等,而不是其他。