Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 18, 2009 01:41:18

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

В общем, идея тут у меня промелькнула.
Если удастся всё-таки реализовать эту байду через ие, просто залогиниваться, то можно, для некоторого ускорения процесса, просто напросто читать куку, будучи уже авторизованным и находищимся на нужной страничке сервиса яши, и с этой кукой рулить уже!!

Плииз, topazz, помоги мне!!



Офлайн

#2 Авг. 19, 2009 11:05:58

topazz
От:
Зарегистрирован: 2008-09-12
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

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

Относительно 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 - русском немного методов



Отредактировано (Авг. 19, 2009 11:12:08)

Офлайн

#3 Авг. 19, 2009 12:20:51

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Я ставил задержку в 15 секунд. Как раз, успевает загрузиться страничка. Форма есть - поиск. Сегодня еще подолбаю.. Ссылки - это про методы? А то, я же говорю, у doc не вижу методов никаких. А откуда ты их берешь..?

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

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

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

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

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

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

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

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

Кажется, справлюсь теперь! ;)



Отредактировано (Авг. 19, 2009 18:49:40)

Офлайн

#4 Авг. 19, 2009 19:35:33

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Итак, кому интересно, вот рабочий код, который открывает 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() # сабмитим форму



Отредактировано (Авг. 19, 2009 19:46:11)

Офлайн

#5 Авг. 20, 2009 14:12:26

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Заглянул в топик, появилась идея сделать себе автоматическую пополнялку денег на телефон из яндекс денег, при балансе менее 50 руб :)
Chrizt, у тебя “ручками” через urliib2 получилось войти? Что и куда post'ом отправлять? Через ie у меня не прокатит, так как скрипт на linux сервере будет лежать, и по cron'у работать…



Офлайн

#6 Авг. 20, 2009 15:14:32

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Через urllib2 и даже через механайз получилось войти на яндекс, но по его сервисам не получилось авторизованным бродитб. В других системах проще, реально.

Напиши ТЗ, подробнее.



Офлайн

#7 Авг. 20, 2009 15:22:17

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

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 делаю все нормально



Офлайн

#8 Авг. 20, 2009 17:39:36

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

О, не, не получится у тебя ничего. все сервисы яши тебе будут недоступны.
Советую изучить этот DOM, потому что, вроде как и без IE можно рулить браузером. Я могу ошибаться, но есть вроде как WebBrowser, так же, есть к питону ещё различные версии эмуляторов браузера. Не помню названий, но я почти уверен, что ты сможешь найти выход. А урллибом даже если ты авторизуешься - ты за пределы Яндекс.Паспорта не уйдёшь.



Офлайн

#9 Авг. 20, 2009 18:27:36

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Технически, если посылать нужные хедеры, то яндексу пофиг, урллиб это, или браузер.
Попробую я скормить скрипту существующие куки из браузера, должно получиться.



Офлайн

#10 Авг. 20, 2009 18:40:28

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Чувак, я уже брал куки с авторизации, но с ними дальше wow.ya.ru не уходил.
советую тебе включить сниффер и посмотреть, сколько там порождается редиректов.
конечно, если этим редиректам всем следовать правильно - может, у тебя что-то и получится.
там вроде как есть FancyURLOpener - попробуй его.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version