Скрытая ссылка.

juk88

Client
Регистрация
30.05.2018
Сообщения
77
Благодарностей
12
Баллы
8
Иногда на сайте есть скрытые ссылки, например в 1 пиксель. Или точка под цвет фона. Реальный человек по ней вряд ли кликнет, а бот с удовольствием. Можно ли как-то перед кликом, проверить ссылку на размер?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
869
Благодарностей
1 099
Баллы
93
Да, можно. Вот пример кода который может подойти под эти нужды.
Код:
int min = 10; // Желаемая минимальная ширина ниже которой кликать не будем
instance.ActiveTab.SetSourceText("<html><body><a id='a' href='#link'>link</a></dody></html>"); // Создаем ссылку (в реальном проекте этот пункт удалим)
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "id", "a", "text", 0); // Ищем ссылку по ID
if (he.IsVoid) throw new Exception("К сожалению ссылка не найдена"); // Если ссылка не найдена - выхожим по красной ветке
int linkWidth = int.Parse(he.GetAttribute("width")); // Здесь уже ссылка точно найдена - получаем её ширину
if(linkWidth > min) he.Click(); // Если ширина больше минимума - производим клик
 
  • Спасибо
Реакции: juk88

backoff

Client
Регистрация
20.04.2015
Сообщения
4 557
Благодарностей
3 297
Баллы
113
ссылка может быть любого размера и спрятана под
C#:
display: none;
это тоже стоит учитывать
 

Gizmond

Client
Регистрация
18.02.2017
Сообщения
178
Благодарностей
30
Баллы
28
А есть сайт с примером , где можно увидеть такое ?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
4 557
Благодарностей
3 297
Баллы
113
нет.
можно создать его самому и тестить

логика простая, сначала надо искать к коде
display: none;
проверять ссылку, есть ли там, или сразу его игнорить, а потом делать ход конем
но в целом мне кажется сложно попасть на ссылку для ботов, если ссылок много и делать рандомные клики, а тем более если шаб пишется под конкретный сайт
 
Последнее редактирование:

juk88

Client
Регистрация
30.05.2018
Сообщения
77
Благодарностей
12
Баллы
8
Да, можно. Вот пример кода который может подойти под эти нужды.
Код:
int min = 10; // Желаемая минимальная ширина ниже которой кликать не будем
instance.ActiveTab.SetSourceText("<html><body><a id='a' href='#link'>link</a></dody></html>"); // Создаем ссылку (в реальном проекте этот пункт удалим)
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "id", "a", "text", 0); // Ищем ссылку по ID
if (he.IsVoid) throw new Exception("К сожалению ссылка не найдена"); // Если ссылка не найдена - выхожим по красной ветке
int linkWidth = int.Parse(he.GetAttribute("width")); // Здесь уже ссылка точно найдена - получаем её ширину
if(linkWidth > min) he.Click(); // Если ширина больше минимума - производим клик
Спасибо. Буду разбираться.
 

juk88

Client
Регистрация
30.05.2018
Сообщения
77
Благодарностей
12
Баллы
8
Да, можно. Вот пример кода который может подойти под эти нужды.
Код:
int min = 10; // Желаемая минимальная ширина ниже которой кликать не будем
instance.ActiveTab.SetSourceText("<html><body><a id='a' href='#link'>link</a></dody></html>"); // Создаем ссылку (в реальном проекте этот пункт удалим)
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "id", "a", "text", 0); // Ищем ссылку по ID
if (he.IsVoid) throw new Exception("К сожалению ссылка не найдена"); // Если ссылка не найдена - выхожим по красной ветке
int linkWidth = int.Parse(he.GetAttribute("width")); // Здесь уже ссылка точно найдена - получаем её ширину
if(linkWidth > min) he.Click(); // Если ширина больше минимума - производим клик
А, можно ли этот код изменить, чтоб ссылку загружать из переменной?
 

juk88

Client
Регистрация
30.05.2018
Сообщения
77
Благодарностей
12
Баллы
8
ссылка может быть любого размера и спрятана под
C#:
display: none;
это тоже стоит учитывать
Это как раз думаю, не очень сложно учитывать, установкой фокуса на ссылке.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)