2013-03-25 2 views
2

У меня есть следующий код:протоколирования в протокол HTTPS сайт с помощью питона механизировать библиотеки

import requests 
import sys 
import urllib2 
import re 
import mechanize 
import cookielib 
#import json 
#import imp 
#print(imp.find_module("requests")) 
#print(requests.__file__) 
EMAIL = "******" 
PASSWORD = "*******" 

URL = 'https://www.imleagues.com/Login.aspx' 
address = "http://www.imleagues.com/School/Team/Home.aspx?Team=27d6c31187314397b00293fb0cfbc79a" 
br = mechanize.Browser() 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

br.add_password(URL, EMAIL, PASSWORD) 
br.open(URL) 

#br.open(URL) 
#br.select_form(name="aspnetForm") 
#br.form["ctl00$ContentPlaceHolder1$inUserName"] = EMAIL 
#br.form["ctl00$ContentPlaceHolder1$inPassword"] = PASSWORD 
#response = br.submit() 
#br= mechanize.Browser() 
site = br.open(address) 

    # Start a session so we can have persistant cookies 
#session = requests.Session() 

    # This is the form data that the page sends when logging in 
#login_data = { 
# 'ctl00$ContentPlaceHolder1$inUserName': EMAIL, 
# 'ctl00$ContentPlaceHolder1$inPassword': PASSWORD, 
    # 'aspnetFrom': 'http://www.imleagues.com/Members/Home.aspx', 
#} 
#URL_post = 'http://www.imleagues.com/Members/Home.aspx' 
    # Authenticate 
#r = session.post(URL, data=login_data) 

    # Try accessing a page that requires you to be logged in 
#r = session.get('http://www.imleagues.com/School/Team/Home.aspx?Team=27d6c31187314397b00293fb0cfbc79a') 



website = site.read() 


f = open('crypt.txt', 'wb') 
f.write(website) 

#print(website_html) 

Я пытаюсь войти в этот сайт, чтобы контролировать время игры и убедитесь, что они не изменились на меня (снова). Я пробовал разные способы сделать это, большинство из них прокомментировано выше, но все они перенаправляют меня обратно на страницу входа. Есть идеи? Благодарю.

ответ

3

Как я вижу на данном веб-сайте входа в систему нет в submit тег. Войти в функцию JavaScript

<a ... href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$btnLogin','')" </a>

и mechanize не может справиться с JavaScript. Я столкнулся с очень похожими проблемами и придумал решение использовать Spynner. Это безголовый веб-браузер. Таким образом, вы можете выполнять те же задачи, что и при использовании механизации, и иметь поддержку javascript.

+0

Это делает гораздо больше смысла. Благодарю. –

+0

Любые идеи о том, как выбрать выбор из раскрывающегося списка (javascript)? Я выяснил, как заполнить свое имя пользователя и пароль, но мне нужно сейчас выбрать свою школу. –

+0

Вы можете запустить js-код в spinner, я думаю, это проще, чем в python. Это выглядит примерно так: 'browser.runjs ('$ (" [schid = e002364c7b414cfd8195be06fb7707ba] "). Click()');' 'schid' является атрибутом конкретного элемента' '' школы '' в 'html'. Вот сущность, которую я пробовал: https://gist.github.com/zygisx/5243735 –

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