zubr
Гость
|
|
« : 07-04-2008 06:57 » |
|
Пишу программу - умный бот, который программируется пользователем на определенные действия. То есть к примеру зайти на определенный сайт, зарегистрироваться или войти, если зарегистрированный пользователь, к примеру купить книгу (если есть такая) и т. п. Столкнулся с проблемой авторизации. То есть 1-й раз бот на сайт заходит, авторизуется, все нормально. Но при заходе повторно (через несколько минут или меньше) сервер запоминает авторизацию и соответственно предлагает другую страницу, а бот пытается на этой другой странице авторизоваться. Можно ли как-нибудь сделать, чтобы сервер забывал авторизацию. Куки удалять пробовал - не помогает.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 07-04-2008 08:47 » |
|
Дык от сервера зависит. А бот, по-моему, от сервера зависеть не должен.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
zubr
Гость
|
|
« Ответ #2 : 07-04-2008 09:38 » |
|
Это понятно, что от сервера зависит. Вопрос как обойти эту фичу сервера. Не перегружать же приложение после каждого цикла бота.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #3 : 07-04-2008 12:11 » |
|
Если сервак "помнит" без куков, то скорее всего у него активны сессии. Сессия живет по дефолту 20 минут. Второй выход, разлогинится на сервере. Скорее всего тогда, сервер закроет сессию. А так очень сильно зависит от логики сервера.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
marat_
Шеф-повар
Опытный
Offline
|
|
« Ответ #4 : 07-04-2008 12:51 » |
|
что-то подобное писал, клики на рекламе, прочая ботва. спасло разлогинивание. особо не разбирался, времени не было, поэтому остановился на этом варианте
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #5 : 07-04-2008 14:34 » |
|
Разлогинится на сервере - понятно решит вопрос, но это если пользователь боту запрограммирует это действие, а если нет?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #6 : 07-04-2008 16:47 » |
|
zubr, Тоды доводи до ума свой бот, чтоб он сам распозновал свое состояние с сервером. В залогинином. Значит не надо логинится. а надо продолжать работать с сервером.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
zubr
Гость
|
|
« Ответ #7 : 07-04-2008 17:28 » |
|
Хмм... Как это программно сделать?
|
|
|
Записан
|
|
|
|
Вахмурка
Помогающий
Offline
Пол:
Программист
|
|
« Ответ #8 : 07-04-2008 19:05 » |
|
Это понятно, что от сервера зависит. Вопрос как обойти эту фичу сервера. Не перегружать же приложение после каждого цикла бота.
zubr, если перезагрузка приложения помогает, значит север индефицирует пользователя по атрибутам клиенского сокета, может попробовать разрывать связь с сервером после регистрации. Тогда при новом соединении будет создаваться новый соекет с другими ( хотя это не факт, скорей всего придётся проверять программно ) клиенскими атрибутами. Ну и куки тоже лучше не посылать. Есть ещё одна идея: попробовать при повторном входе посылать серверу какие ни будь "неправильные" куки, он тогда точно выдаст страницу авторизации. Но всё это надо проверять.
|
|
« Последнее редактирование: 07-04-2008 19:30 от Вахмурка »
|
Записан
|
Программа – это мысли спрессованные в код.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #9 : 07-04-2008 20:03 » |
|
Ну как правило авторизация оформляется через поля расположенные в форме. Я так понял, ты работаеш через движок IE. Иши формы <form>. Скорее всего будет оформлено через метод ַPOST. Ну и в этой форме проверку по ключевым словам Password, Login, Nick ... Можно поискать тег, оформленный так <input type="password"> Это должно работать в большинстве случаев. А так все зависит от фантазии веб дизайнера.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
marat_
Шеф-повар
Опытный
Offline
|
|
« Ответ #10 : 08-04-2008 03:39 » |
|
ага. также искал. потом напоролся на сайт, с которым проблемы были: не заходил и всё тут. бился несколько часов, потом просмотрел в експлорере, а там ошибка была: вместо обычного "password" стояло "pussword". пришлось учитывать вариант неграмотных программеров.
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #11 : 08-04-2008 06:52 » |
|
Вахмурка, вариант с сокетами отпадает, бо как Finch правильно предположил бот работает на основе движка IE (на порядок меньше работы, чем вручную парсить, отлавливать действия пользователя и т. п.). Хотя... если только попробовать перехватывать функции создания сокета - но это слишком гиморно, хотя возможно и самый реальный вариант. Насчет неправильных куков, похоже пока сессия не закончится, некоторые серверы на хуки не срабатывают. Finch, твое предложение подойдет для конкретных серверов, как универсальное решение - оно трудно выполнимо, или тогда надо чтобы пользователь сам обучал бот, на вариант регистрации и без. В таком случае, может просто вменить пользователю обучить бот разлогиниваться по окончании цикла. Но так как хелп пользователи читают редко этот вариант будет работать плохо.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #12 : 08-04-2008 17:19 » |
|
zubr, Пароль как правило ввводится в поле, которое закрывает знаки звездочками. Я насколько знаю из стандартных средств, только тег <input type="password"> позволяет это сделать в HTML без лишних плясок с бубном. Просто дай на поиск именно данное поле. Находиш, то скорее всего нужно залогинится. Хотя некоторые изврашенци могут его втиснуть в страницу со свойством display:none. Но тут все случаи жизни
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
|