Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Капча и cURL
Форумы портала PHP.SU » PHP » Программирование на PHP » Капча и cURL

Страниц (1): [1]
 

1. Delovoy - 21 Января, 2011 - 10:20:15 - перейти к сообщению
Задача: нужно сделать обход капчи
Аналитика:
есть сайт ххх
я на нем успешно авторизуюсь, захожу в раздел объявления
и при подачи объявления существует защита в виде капчи

просмотрел заголовки, которыми обменивается браузер с сервером
1. GET на получение страницы подачи объявления
2. бла-бла-бла
3. GET /captcha/884d06ab17e408443271164 686c49603.png HTTP/1.1

т.е. если я правильно понимаю то капчу мы получаем отдельным запросом и потом она уже отображается в форме ввода объявления

Что попробовал:
Вариант №1
Первое и самое простое. Открыл исходный код формы.
Нашел:
CODE (html):
скопировать код в буфер обмена
  1. <input type="hidden" name="captcha_image" value="c3d2f19d9d39731827c14abc6a6eb472.png" />
  2. <div class="field captchafield ">
  3.                 <input name="captcha_guess" type="text" id="captcha_guess" class="textinput" value="" />
  4.                 <div class="required" title="Вы должны заполнить это поле для отправки формы">*</div>
  5. </div>
  6.  

поменял c3d2f19d9d39731827c14abc6a6eb472 .png на заведомо известное значение xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx.png с этого же сайта и в значении input name="captcha_guess" указал заведомо известные цифры!
Не прокатило ...
По всей видимости на сервере хранится идентификатор отправленной капчи и после получения ответа с данными формы сравнивается с тем, что отдавалось (отправлялось)

Вариант №2

Добавил в свой скрипт вызов метода GET для запроса капчи с сервера

PHP:
скопировать код в буфер обмена
  1. curl_setopt($ch, CURLOPT_URL, "http://ххх.com.ua/captcha/a7ee161016abbe72b9baa3f0542681a1.png");
  2.  
  3. // установка метода передачи параметров
  4. curl_setopt($ch, CURLOPT_POST, 0);
  5.  
  6. // установка браузера
  7. curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13");
  8.  
  9.  
  10. // добавляем заголовков к нашему запросу.
  11.  $headers = array
  12.     (
  13.     'Accept: image/png,image/*;q=0.8,*/*;q=0.5',
  14.     'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
  15.     'Accept-Encoding: deflate',
  16.     'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'
  17. );
  18.  
  19.  
  20. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);


Понятно, что в запросе я запрашиваю заренее известную мне капчу.
Теоритически ... после получения нового GET captcha от меня, сервер должен был перезаписать идентификатор отправленной капчи на мой и тогда вариант №1 прокатил бы, значения сошлись

но это теоретически ..практически пока не прокатывает ...
помогите разобраться !
2. Invert - 21 Января, 2011 - 11:05:11 - перейти к сообщению
Куки смотрели?
3. Delovoy - 21 Января, 2011 - 11:20:49 - перейти к сообщению
ты имеешь ввиду прием, отправку кук ?
да, в коде есть

PHP:
скопировать код в буфер обмена
  1. //// Функции для обработки установливаемых сайтом кук.
  2. curl_setopt($ch, CURLOPT_COOKIEJAR, "d:\out\my_cookies.txt");
  3. curl_setopt($ch, CURLOPT_COOKIEFILE, "d:\out\my_cookies.txt");
4. Мелкий - 21 Января, 2011 - 11:27:50 - перейти к сообщению
Если URL капчи однозначно преобразовывается в текст капчи - то грош цена такой капче.

Или сами смотрите-изучайте-реализовывайте алгоритмы оптического распознавания текста, или используйте готовые. Например, какой-нибудь http://antigate[dot]com/index.php
5. Delovoy - 21 Января, 2011 - 12:01:41 - перейти к сообщению
Мелкий пишет:
Если URL капчи однозначно преобразовывается в текст капчи - то грош цена такой капче.
не совсем понял что имеется ввиду ?
URL капчи не преобразовывается в вводимый текст

884d06ab17e408443271164 686c49603.png = 3782 (значение кода на картинке)
т.е. никакого явного соответствия между картинкой и кодом нет

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

вот досмотрелся еще до одного момента
когда я отправляю свой GET /captcha/...
то не вижу его отображения в программе просмотра http заголовков
(пользуюсь Мозила + LiveHTTPHeaders)
но при этом в ответ получаю картинку ...

сопутсвующий вопрос
PHP:
скопировать код в буфер обмена
  1. echo "Загружена капча!" .$cap . " <br/>";
попытка вывести картинку в браузер выводит абзац крякозябликов, а не картинку ...как сделать чтобы было видно именно картинку ?
6. Champion - 21 Января, 2011 - 12:58:43 - перейти к сообщению
Если это нормальная капча, то ее можно либо ввести, либо распознать. Почитайте механизм капчи и поймете, что ваши действия проблему не решат. Каждый раз при обращении к капче генерится новый код и значение записывается в сессию. Какой бы ни была ссылка на капчу.

Есть кончено дырявые капчи, но обычная человеческая капча такая.
7. Мелкий - 21 Января, 2011 - 13:11:59 - перейти к сообщению
Delovoy пишет:
не совсем понял что имеется ввиду ?

Т.е. если капча запрошенная с определённого URL'а прожуёт значение, которое когда-то там на ней было. В общем - именно то, что вы пытались сделать, на нормальной капче работать не должно по определению.

Delovoy пишет:
попытка вывести картинку в браузер выводит абзац крякозябликов, а не картинку ...как сделать чтобы было видно именно картинку ?

варианта как обычно 2:
0) тег img с указанием адреса до картинки.
1) http://webo[dot]in/articles/habrahab[dot][dot][dot]data-url-images/

Delovoy пишет:
алгоритмы оптического распознования, в данном случае не подходят
сайт может поменять начертание, шрифт и т.д. и работу прийдется переделывать заново

Т.е. вы думаете, что капча существует только для внесения неудобства пользователям?
8. biperch - 21 Января, 2011 - 14:18:25 - перейти к сообщению
Delovoyне морочь себе голову
9. Delovoy - 21 Января, 2011 - 14:32:03 - перейти к сообщению
Champion пишет:
Почитайте механизм капчи и поймете, что ваши действия проблему не решат.
можете подсказать конкретно, где есть хорошее описание ?
если каждый раз значение капчи генерится случайным образом, тогда зачем сервер хранит их ?
я сделал проверку - просто в браузере ввел адрес капчи 3-х дневной давности
CODE (html):
скопировать код в буфер обмена
  1. http://ххх.com.ua/captcha/a7ee161016abbe72b9baa3f0542681a1.png

картинка доступна, код тот же самый ...

Мелкий пишет:
Т.е. вы думаете, что капча существует только для внесения неудобства пользователям?

я думаю, капча нужна для защиты от спама. в данном конкретном случае, я помогаю девушке, которая работает риэлтором. Автоматизирую подачу объявлений
10. JustUserR - 21 Января, 2011 - 14:34:31 - перейти к сообщению
Delovoy пишет:
884d06ab17e408443271164 686c49603.png = 3782 (значение кода на картинке) т.е. никакого явного соответствия между картинкой и кодом нет
Для осуществления корректной автоматизированной авторизации на целевом web-сервере включающем дополнительную проверку посредством требования ввода значения captcha-элемента - необходимо обеспечить передачу такого параметра запроса для которого производится соответствие с заданным идентификатором сессии в текущей инстанции страницы - в то время как осуществления простого CURL-запроса целевого изображения и передача соответствующего ему captcha-значения анализированного мануальным методом не приводит к результату
Delovoy пишет:
Пользуюсь Мозила + LiveHTTPHeaders но при этом в ответ получаю картинку
Использование предполагаемого вами браузера может приводить к форсированному кешированию локальных элементов ассоциированных с некоторым фиксированным URL-адресом - поэтому его использование для тестирования такой системы не целесообразно
11. Delovoy - 21 Января, 2011 - 14:57:44 - перейти к сообщению
Мелкий пишет:
1) http://webo.in/articles/habrahab...data-url-images/
спасибо, получилось!!!
Мелкий ...реально Крупный! Превосходно

biperch пишет:
Delovoyне морочь себе голову
очень ценный коментарий ..спасибо

Здравствуйте, JustUserR Улыбка

JustUserR пишет:
Использование предполагаемого вами браузера может приводить к форсированному кешированию локальных элементов ассоциированных с некоторым фиксированным URL-адресом - поэтому его использование для тестирования такой системы не целесообразно

возможно ли отключить кеширование или каким инструментом лучше пользоваться ?
12. JustUserR - 21 Января, 2011 - 15:09:32 - перейти к сообщению
Delovoy пишет:
Возможно ли отключить кеширование или каким инструментом лучше пользоваться ?
В качестве возможного инструмента для реализации предполагаемой задачи допустимо использование приложения proxomitron - в совокупности с браузером не осуществляющим неявное кешрование
13. Seliboba - 11 Апреля, 2012 - 10:26:25 - перейти к сообщению
извените может вопрос не в тему а вообще можно запросами как то обойти капчу или никак ?
14. Fon - 19 Июля, 2012 - 10:46:23 - перейти к сообщению
Delovoy разобрался с автоматическим постингом?
15. Мелкий - 19 Июля, 2012 - 10:48:47 - перейти к сообщению
С новым годом.

 

Powered by ExBB FM 1.0 RC1