Войти с помощью Python - megaupload - PullRequest
0 голосов
/ 27 февраля 2011

Я пытаюсь исправить программу, которая может войти в мою учетную запись 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 ]

2 голосов
/ 27 февраля 2011

Хорошо, я только что реализовал это сам, и, кажется, вы просто забыли одно значение - вот почему я всегда использую TamperData или что-то подобное, чтобы просто проверять, что мой браузер отправляет на сервер - ПУТЬ проще и короче, чем просматривать HTML.

В любом случае просто добавьте '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 голосов
/ 27 февраля 2011

Вы можете смоделировать заполнение формы.

Для этого вы можете использовать механизировать lib base на модуле 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()

См. Использовать механизацию для входа в megaupload

1 голос
/ 27 февраля 2011

Возможно, вам повезет больше с mechanize или twill , которые предназначены для оптимизации таких процессов. В противном случае, я думаю, что у вашего новичка отсутствует хотя бы один важный компонент: что-то для обработки куки. Вот фрагмент кода, который я выкладывал в прошлый раз, когда я сделал это:

# 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)
)
0 голосов
/ 27 февраля 2011

Я предполагаю добавить пару c=login имя / значение в login_data, а не включать ее в URL.

Вы, вероятно, также нарушаете TOS / EULA, но я не могу сказать, что меня это сильно волнует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...