Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Кликнуть по HTMLElement в определённо месте?


Автор: xXxSataNxXx 31.8.2010, 11:57
На вебсайтах есть распознование ботов, там вылазят картинки с некоторым количеством разных фигур и нужно кликнуть внутри круга, найти место куда кликнуть я знаю, а как програмно кликнуть по заданным координатам на картинке?

Автор: diadiavova 31.8.2010, 12:03
Смотря как все реализовано. Обычно для этого используют теги map и area. Если в твоем случае сделано именно так, то и кликай по area.

Автор: xXxSataNxXx 31.8.2010, 12:29
Хм... Там у картинки нет никаких тегов, просто php файл... а я брал картинку с хеша веббраузера обрабатывал ей и находит место куда следует кликать...

Автор: diadiavova 31.8.2010, 13:20
Цитата(xXxSataNxXx @  31.8.2010,  13:29 Найти цитируемый пост)
 Там у картинки нет никаких тегов, просто php файл...

А как они по-твоему там должны быть? Вот взгляни на пример использования, может найдешь на своей странице что-то подобное.
http://www.htmlbook.ru/html/map.html
Если нет, выясни как это реализовано на странице, но я думаю, что именно так.

Автор: xXxSataNxXx 31.8.2010, 15:35
Нет, тут совсем по другому...
Код

<input type="image" name="submit" src="captcha.php" style="width:100px;height:50px;border:1px solid #fff;">

Автор: diadiavova 31.8.2010, 15:39
Из того, что ты написал, невозможно определить как именно.

Автор: xXxSataNxXx 31.8.2010, 16:23
Если бы всё было просто и можно было бы узнать какой способ тут используется, я бы и не спросил, эту картинку можно просто получить набрав адрес php страницы, но у неё в тексте ничего кроме этого нет...:(
Я просмотрел все Style и Script на странице, но кроме этой формы больше ничего к картинке не относится...
Код

<form name="form_check" action="bot_check.php?redir=%2Fzone_resource.php" method="post">
    <center><input type="image" name="submit" src="captcha.php" style="width:100px;height:50px;border:1px solid #fff;"></center>
</form>

Я нашёл бота для флеш игры, он сделан таким образом: Определяешь ему точку на которой надо проверить цвет, если цвет совпадает с нужным то он кликает в определённом месте, которое ты задаёшь по координатам, но соурсе программы я получить не могу, да и сделана она на С++...
В VB.Net я думаю что то типо такого тоже реально реализовать, только незнаю как...

Автор: neic 1.9.2010, 01:28
Окно браузера открыто? Т.е. элемент виден?

Автор: xXxSataNxXx 1.9.2010, 08:40
neic ты про что? Если ты про бота, то ему всё равно, видно окно браузера или не видно...

Автор: diadiavova 1.9.2010, 09:10
Цитата(xXxSataNxXx @  31.8.2010,  17:23 Найти цитируемый пост)
Я просмотрел все Style и Script на странице, но кроме этой формы больше ничего к картинке не относится...

Почему ты так решил?
Цитата(xXxSataNxXx @  31.8.2010,  17:23 Найти цитируемый пост)
Я нашёл бота для флеш игры

А флеш тут ни при чем, - у тебя картинка.

Автор: xXxSataNxXx 1.9.2010, 09:25
Ну, решил я потому, что просмотрев все скрипты и стили на этой странице, там нет ничего подобного, нет никаких связей с данным элементом, нет никаких предпосылок...
Флеш то тут не причём, просто та програмка может работать не только с флешью, она проверяет любое изменение, и выполняет клики в любом месте, не обязательно на флешке, можно просто кнопки нажимать и так далее...

Автор: diadiavova 1.9.2010, 09:40
Цитата(xXxSataNxXx @  1.9.2010,  10:25 Найти цитируемый пост)
там нет ничего подобного

Подобного чему? Если ты о карте, то я уже давно не о ней. 
Цитата(xXxSataNxXx @  1.9.2010,  10:25 Найти цитируемый пост)
нет никаких связей с данным элементом, нет никаких предпосылок

Если бы их не было, то это не работало бы. Чудес на свете не бывает, а уж в информатике - подавно. Существует масса способов реализовать то, о чем ты пишешь. Вот простой пример(действует только в IE)
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Click</title>
    <meta content="text/html; charset=windows-1251" http-equiv="Content-Type" />
</head>
<body onclick="return window_onclick()">
    <input id="img" type="image" alt="vingrad" src="http://forum.vingrad.ru/style_images/2/menu/menu.gif" />
    <div id="output">
    </div>
    <script type="text/javascript">

        function writeText(txt)
        {
            output.appendChild(document.createTextNode(txt));
            output.appendChild(document.createElement("br"));
        }

        function window_onclick()
        {
            var x = event.x;
            var y = event.y;
            if (x > 320 && x < 370 && y > 85 && y < 160)
            {
                writeText("Виноград");
            }
        }

    </script>
</body>
</html>

Как видишь в скрипте нет ни одного упоминания картинки, но если ты кликнешь в районе винограда, то увидишь реакцию. Поэтому я еще раз спрашиваю: ты уверен, что изучил все возможности?

Автор: Pilger 2.9.2010, 14:48
Я не думаю, что координаты определяются на клиенте.

Цитата

Я нашёл бота для флеш игры, он сделан таким образом: Определяешь ему точку на которой надо проверить цвет, если цвет совпадает с нужным то он кликает в определённом месте, которое ты задаёшь по координатам, но соурсе программы я получить не могу, да и сделана она на С++...
В VB.Net я думаю что то типо такого тоже реально реализовать, только незнаю как...


Цитата

Окно браузера открыто? Т.е. элемент виден? 


Он хотел сказать, что если тебе надо реально кликнуть мышкой в браузере, как это делал бы пользователь, то это легко, но элемент должен быть виден на экране. При этом происходит реальное нажатие мыши (в компе разумеется^^) и вряд ли ты сможешь чем то заниматься параллельно.
Так же через АПИ есть возможность послать нажатие мыши в любое окно, даже в то, которого не видно. При этом надо задать координаты внутри окна, куда надо кликнуть. Правда не все окна у меня воспринимали такое нажатие, но браузер, наверное, будет. Это как вариант.

Автор: diadiavova 2.9.2010, 15:50
Цитата(Pilger @  2.9.2010,  15:48 Найти цитируемый пост)
Я не думаю, что координаты определяются на клиенте.

А как ты на сервере определишь куда кликнули, если не пошлешь на сервер координаты? smile 

Автор: Pilger 2.9.2010, 19:27
Поправка. Не координаты определяются, а определяется правильно ли попал. Я думаю, что координаты передаются серверу, а там уже в целях безопасности решается всё остальное. Иначе чё это за антибот. Но понятия не имею, где они пересылаются.

Автор: diadiavova 2.9.2010, 19:30
Цитата(Pilger @  2.9.2010,  20:27 Найти цитируемый пост)
 Но понятия не имею, где они пересылаются. 

Для того, чтобы иметь об этом понятие, надо как минимум увидеть страницу smile 

Автор: xXxSataNxXx 6.9.2010, 01:05
Ну, допустим что такое можно реализовать подкачкой аяксом, тогда ты в годе этого не увидишь...
А нет такого, чтоб кликнуть мышко в опрделённом месте. Как на любом конроле с формы кликнуть в определённой точке я знаю, а вот как на вебстраничке незнаю...
Да и мне не нужно посылать запрос на сервер с определёнными координатами, даже если выловить этот код,  мне просто надо кликнуть в опредённом мест мышкой...

Автор: diadiavova 6.9.2010, 08:17
Цитата(xXxSataNxXx @  6.9.2010,  02:05 Найти цитируемый пост)
Ну, допустим что такое можно реализовать подкачкой аяксом

А при чем тут аякс? smile 
Цитата(xXxSataNxXx @  6.9.2010,  02:05 Найти цитируемый пост)
 тогда ты в годе этого не увидишь..

Это еще почему? smile 
Цитата(xXxSataNxXx @  6.9.2010,  02:05 Найти цитируемый пост)
А нет такого, чтоб кликнуть мышко в опрделённом месте.

Если используется DOM, то нет.
Цитата(xXxSataNxXx @  6.9.2010,  02:05 Найти цитируемый пост)
 Как на любом конроле с формы кликнуть в определённой точке я знаю, а вот как на вебстраничке незнаю...

Если на форме ты делаешь это через винапи, то не думаю, что на вебстраничке это делается иначе, а если через стандартные средства, то поделись секретом, я не в курсе. Хотя, конечно, можно вызвать метод OnMouseClick с нужными параметрами.
Цитата(xXxSataNxXx @  6.9.2010,  02:05 Найти цитируемый пост)
Да и мне не нужно посылать запрос на сервер с определёнными координатами, даже если выловить этот код

А это не имеет значения. В любом случае тебе надо не эмулировать клик, а вызывать метод, который его обрабатывает. От самого клика нет никакой пользы.
Цитата(xXxSataNxXx @  6.9.2010,  02:05 Найти цитируемый пост)
мне просто надо кликнуть в опредённом мест мышкой... 

Зачем? Если это секрет, то я помочь не смогу.

Автор: Pilger 6.9.2010, 16:32
Цитата(xXxSataNxXx @ 6.9.2010,  01:05)
А нет такого, чтоб кликнуть мышко в опрделённом месте. Как на любом конроле с формы кликнуть в определённой точке я знаю, а вот как на вебстраничке незнаю...

Как это нет такого? Я что то не понял? Есть функции API хотя бы, которые имитируют нажатие мыши. Там даже такие вещи, как нажатие и отжатие кнопок можно имитировать, как для клавиатуры, так и для мыши. Например Mouse_Event из user32. Но проблемы говорил выше уже. А можно попробовать еще и

Код

SendMessage(cWin, WM_LBUTTONDOWN, MK_LBUTTON, mpos)


если это заработает, то вообще идеально будет. Правда не везде у меня работало, как уже говорил.
Неужели ничего не работает? Или я не понял?

Кстати даже SendKeys посылает нажатие мыши.

Автор: diadiavova 6.9.2010, 17:48
Цитата(Pilger @  6.9.2010,  17:32 Найти цитируемый пост)
Кстати даже SendKeys посылает нажатие мыши.

А поподробнее можно?

Автор: Pilger 6.9.2010, 18:41
Опс. Действительно перепутал. Простите.  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)