2015-10-11 3 views
-1

Im пытается сделать скрипт для доступа к веб-странице. Он загружает первую страницу, находит форму входа, заполняет ее и отправляет. Веб-сайт работает так же, как и в facebook, если у вас уже есть файл cookie, вы перенаправлены на ваш список каналов, иначе на страницу входа в систему. Но в ответ я не получаю другую страницу, нужно просто получить строку так:Войти с помощью механизации python. String возвращается

s1: 1MEqkcRcZQ7x6adaszkZUQyRFRhCfXz1z: c2c8d18f12f50ab3e8daA1cf80a0d8b9f64e9d6684b8eb064dd76892d6134cde: 1646683

Его, как 4 строки, разделенные с «:». Первое, что я не знаю, что есть. Второй - это имя пользователя, третий - мой хэшированный пароль (я полагаю), а последний - мой идентификатор пользователя. Выполняя тест в FF, я узнаю, что это проблема с Javascript, если у вас нет Javascript в вашем браузере, вы получите эту строку после входа в систему.

Вот мой код>

import mechanize 
    import urllib 
    import cookielib 

    # Browser 
    br = mechanize.Browser() 

    # Cookie Jar 
    cj = cookielib.LWPCookieJar() 
    br.set_cookiejar(cj) 

    # Browser options 
    br.set_handle_equiv(True) 
    br.set_handle_gzip(True) 
    br.set_handle_redirect(True) 
    br.set_handle_referer(True ) 
    br.set_handle_robots(False) 

    # Follows refresh 0 but not hangs on refresh > 0 
    br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

    # Want debugging messages? 
    br.set_debug_http(True) 
    br.set_debug_redirects(True) 
    br.set_debug_responses(True) 

    # User-Agent (this is cheating, ok?) 
    br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.3')] 

    # If the protected site didn't receive the authentication data you would 
    wallet = 'username' 
    password = 'password' 

    response = br.open('https://www.example.com/') 
    #html = response.read() 

    # Show the source 
    #print html 
    # or 
    #print br.response().read() 

    # Show the html title 
    print br.title() 
    #print response.read() 


    # Show the response headers 
    #print response.info() 
    # or 
    #print br.response().info() 

    # Show the available forms 
    for form in br.forms(): 
     print "Form name:", form.name 
     print form 

    # Select the login form 
    br.select_form(nr=2) 

    # Let's login 
    #br.form['op'] = 'login' 
    br.form['login'] = wallet 
    br.form['password'] = password 
    response1 = br.submit() 

    print response1 
    print response1.read() 
    print "#######################" 
    cookie = cookielib.Cookie(version=0, name='PON', value="response1.read()", expires=365, port=None, port_specified=False, domain='https://www.example.com/', domain_specified=True, domain_initial_dot=False, path='/', path_specified=True, secure=True, discard=False, comment=None, comment_url=None, rest={'HttpOnly': False}, rfc2109=False) 
    cj.set_cookie(cookie) 
    response = br.open(https://www.example.com/) 

Потому что я не знаю, что струна, я понял, что это был Cookie, поэтому я попытался положить в моем Cookiejar и попытался br.open (URL) снова , но он всегда возвращает страницу входа в систему. Мне нужно реплицировать, что делает javascript на сайте python, но пока что я застрял. Любые мысли? Я уже пытался прочитать исходный код веб-сайта, но я не нашел сценарий, который вызывает у меня проблемы. Вероятно, он находится внутри заголовка? Я не знаю.

+2

Вы отметили 3 языка, но только показываете один, что актуально, а какие нет? –

+0

попробуйте добавить заголовок референта в тот же домен вручную. – YOU

+0

Я не помню добавление php в качестве тега. Только javascript и python – georgesilva

ответ

0

У меня есть. Моя ошибка состояла в том, чтобы попробовать установить Cookie со всей строкой. Каждая часть строки была другим файлом cookie. Имя файлов cookie, которые я получил, с помощью расширения chrome «Live HTTP Headers».

Смежные вопросы