Найти - Пользователи
Полная версия: mechanize.Browser() и Яндекс.Паспорт :(
Начало » Web » mechanize.Browser() и Яндекс.Паспорт :(
1 2 3 4 5
Chrizt
В общем, идея тут у меня промелькнула.
Если удастся всё-таки реализовать эту байду через ие, просто залогиниваться, то можно, для некоторого ускорения процесса, просто напросто читать куку, будучи уже авторизованным и находищимся на нужной страничке сервиса яши, и с этой кукой рулить уже!!

Плииз, topazz, помоги мне!!
topazz
Ие - это костыли.
Хотя я сделал регер для народа, но он собака не работает в треде(только в мейн треде) и не работает с проксями.

Относительно AttributeError: <unknown>.bigForm.. получи перед doc.bigForm.iname.value = “Степа” хтмл страници и глянь есть ли там форма вообще.

  text = ie.Document.body.innerHTML
text = unicode(text)
text = text.encode('ascii','ignore')
Скорее всего он еще не загрузил страницу или ушел на другую.
Если иду какие-то сабмиты и переходя выставляй после них задержки.. чтобы все загрузилось.

http://msdn.microsoft.com/en-us/library/aa752043(VS.85).aspx для vb, но в принципе понятно
http://www.script-coding.info/WSH/WebBrowser.html - русском немного методов
Chrizt
Я ставил задержку в 15 секунд. Как раз, успевает загрузиться страничка. Форма есть - поиск. Сегодня еще подолбаю.. Ссылки - это про методы? А то, я же говорю, у doc не вижу методов никаких. А откуда ты их берешь..?

upd:
Может, по асе свяжемся?

upd:
Всё равно, фигня получается

Точнее, не получается. Та же ошибка. Я даже в интерактивном режиме делаю, построчно выполняю код - не получается.
Ты вообще проверял? Работает ли это всё?

Хоть убей - не получается!

Полез читать про этот DOM или типа того..

upd:
такк.. с горем пополам понял, что методы документа - это его управляющие элементы )

теперь буду думать, как выбирать форму, у которой нету name=“бла”

upd:
не совсем понял, зачем ты показал ‘text’, но зато, на это мпримере, я понял, как парсить док. Спасибо! ;)

Кажется, справлюсь теперь! ;)
Chrizt
Итак, кому интересно, вот рабочий код, который открывает ya.ru, выбирает там безымянную форму, заполняет в ней текстовое поле и сабмитит:

# -*- coding: cp1251 -*-
from win32com.client import Dispatch # импортим из COM-клиента Диспатчер (хз, что это..)
import time # импортим либу time

ie = Dispatch("InternetExplorer.Application") # инициализируем осла

ie.Visible = 1 # делаем его видимым, если надо
ie.Navigate("http://ya.ru") # открываем ya.ru
# --> пока браузер не готов, выполняем задержки по одной секунде
while ie.Busy != False:
time.sleep(1)
# <-- браузер готов, погнали дальше

doc = ie.Document # определяем объект открытого документа

# походу, это аналогично предыдущей
# проверке загрузки странички, но у меня никогда не срабатывает )
while doc.readyState != "complete":
time.sleep(1)
# <--


""" # ТУТ ПАРСИЛКА
text = ie.Document.body.innerHTML
text = unicode(text)
text = text.encode('ascii','ignore')
""" # конец парсилке

fr = doc.forms[0] # выбираем первую же форму
fr.text.value = '"Jezuz_Chrizt"' # вводим в текстовое поле объект тщеславия )
fr.submit() # сабмитим форму
igor.kaist
Заглянул в топик, появилась идея сделать себе автоматическую пополнялку денег на телефон из яндекс денег, при балансе менее 50 руб :)
Chrizt, у тебя “ручками” через urliib2 получилось войти? Что и куда post'ом отправлять? Через ie у меня не прокатит, так как скрипт на linux сервере будет лежать, и по cron'у работать…
Chrizt
Через urllib2 и даже через механайз получилось войти на яндекс, но по его сервисам не получилось авторизованным бродитб. В других системах проще, реально.

Напиши ТЗ, подробнее.
igor.kaist
Chrizt
Напиши ТЗ, подробнее.
Вообщем то хочу для начала авторизоваться.
Отпраляю вот что:
d={}
d['login']=LOGIN
d['passwd']=PASSW
d['twoweeks']='yes'
d['retpath']='https%253A%252F%252Fmoney.yandex.ru%252F%253Fncrnd%253D7031'
d['timestamp']='1250767752075'

data = urllib.urlencode(d)
req = urllib2.Request('https://passport.yandex.ru/passport?mode=auth', data)
выдает, что куки не включены… в firefox все нормально, куки предварительно удалены, согласно live http headers делаю все нормально
Chrizt
О, не, не получится у тебя ничего. все сервисы яши тебе будут недоступны.
Советую изучить этот DOM, потому что, вроде как и без IE можно рулить браузером. Я могу ошибаться, но есть вроде как WebBrowser, так же, есть к питону ещё различные версии эмуляторов браузера. Не помню названий, но я почти уверен, что ты сможешь найти выход. А урллибом даже если ты авторизуешься - ты за пределы Яндекс.Паспорта не уйдёшь.
igor.kaist
Технически, если посылать нужные хедеры, то яндексу пофиг, урллиб это, или браузер.
Попробую я скормить скрипту существующие куки из браузера, должно получиться.
Chrizt
Чувак, я уже брал куки с авторизации, но с ними дальше wow.ya.ru не уходил.
советую тебе включить сниффер и посмотреть, сколько там порождается редиректов.
конечно, если этим редиректам всем следовать правильно - может, у тебя что-то и получится.
там вроде как есть FancyURLOpener - попробуй его.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB