Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как скачать картинку(captha) (https://javascript.ru/forum/css-html/29078-kak-skachat-kartinku-captha.html)

eropov 14.06.2012 10:44

Как скачать картинку(captha)
 
Здравствуйте. Есть капча на сайте(https://secure.e-konsulat.gov.pl), чтобы ее увидеть зайдите на сайт,
выберите два любых селекта с городами, выберите в левой колонке визу
и вы перейдете на страницу с капчей. После всех манипуляций пробовал скачать картинку( на другом языке программирования).
Картинка качается, но в содержимом картинки html. Немного разобравшись, понял, что для ее скачивания нужны куки.
Пробовал выдрать куки (на другом языке программирования), выдерается
только MSZ=b258c0ac-a7e5-4aee-b191-4eb71b43527d, а
должно MSZ=b258c0ac-a7e5-4aee-b191-4eb71b43527d; ASP.NET_SessionId=gdwpl255qa4onoizrrflwq55.
Проще говоря, вторая кука отбрасывается. Может быть с помощью JS можно решить данную проблему?
Помогите скачать картинку через IE или достать куки целиком.

devote 14.06.2012 10:47

Цитата:

Сообщение от eropov
Может быть с помощью JS можно решить данную проблему?

с помощью JS вы уж точно не решите этой проблемы, увы но JS не умеет работать/скачивать чужие сайты.

eropov 14.06.2012 11:24

devote
Цитата:

с помощью JS вы уж точно не решите этой проблемы, увы но JS не умеет работать/скачивать чужие сайты.
Скажите, а куки целиком можно получить?
Если можно получить куки, то я запросами к серверу скачаю картинку.

Deff 14.06.2012 11:33

eropov,
Куки текущего пользователя запросто смотряцо в Опере
http://uploads.ru/i/4/R/1/4R1Wo.png
http://uploads.ru/i/D/0/3/D03O5.png
http://uploads.ru/i/S/g/8/Sg8pF.png

eropov 14.06.2012 11:42

Цитата:

Сообщение от Deff (Сообщение 181326)
eropov,
Куки текущего пользователя запросто смотряцо в Опере
http://uploads.ru/i/4/R/1/4R1Wo.png
http://uploads.ru/i/D/0/3/D03O5.png
http://uploads.ru/i/S/g/8/Sg8pF.png

Deff
Вы меня не верно поняли.
Я имел в виду вытащить куки программно JS из браузера IE, записав значение в переменную,
а после уже прочитать эту переменную на языке AutoIT и скачать картинку запросом к серверу.:)

Deff 14.06.2012 11:51

eropov,
не пому я Вас - если прога AutoIT на компе пользователя - то неважно откель куки, вы просто эмулируете запрос якобы из сессии нужного брауза, хотя куки можно посмотреть в любом браузере

eropov 14.06.2012 12:02

Deff
Дело в том, что я получаю куки из IE (Языком программирования AutoIT(это ЯП, а не прога)), как описано выше я получаю только первую строку куки до "; " , а остальное продолжение кук получить не удается. По этому я хочу получить куки JS.

Deff 14.06.2012 12:10

eropov, Вам по идее, нужно выяснить точное имя кука - тогда можно воспользоваться функцией
http://javascript.ru/unsorted/top-10...e-deletecookie
http://ru.wikipedia.org/wiki/Cookies

eropov 14.06.2012 13:54

Deff
Не много просмотрев ваши ссылки использовал код:
function getCookie(name) {
    var matches = document.cookie.match(new RegExp(
      "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ))
    return matches ? decodeURIComponent(matches[1]) : undefined
}

Первую куку вызвал к просмотру так:
alert(getCookie('MSZ'));
Все работает

Вторую куку вызвал к просмотру так:
alert(getCookie('ASP.NET_SessionId'));

Не работает, говорит "undefined", хотя в запросах и в браузере кука существует по данному имени. Скажите, почему код не находит куку?

Deff 14.06.2012 14:06

eropov,
Думаю, что данный код считывания куков не работает с точной внутри имени
попробуйте такой:
<script>
function setcookie(a,b,c){if(c){var d=new Date();d.setTime(d.getTime());d=new Date(d.getTime()+c*1000*60)}if(a&&b)document.cookie=a+'='+b+(c?'; expires='+d.toGMTString():'');else return false}function getcookie(a){var b=new RegExp(a+'=([^;]){1,}');var c=b.exec(document.cookie);if(c){c=c[0].split('=')}else{return false}return c[1]?c[1]:false}

 alert(getcookie('ASP.NET_SessionId'));
</script>

eropov 14.06.2012 14:34

Deff
Код выдает FALSE и еще,
при просмотре куков через chrome на данной куке, в строке "Доступный для скрипта:" стоит значение "Нет (HttpOnly)"

Deff 14.06.2012 15:03

Цитата:

Сообщение от eropov
при просмотре куков через chrome на данной куке, в строке "Доступный для скрипта:" стоит значение "Нет (HttpOnly)"

Смотрите через Оперу, там нет ограничений, либо скачать прокси, позволяющее увидеть пакет приема передачи из-под любого браузера

eropov 14.06.2012 15:40

Цитата:

Смотрите через Оперу, там нет ограничений,
Да, там нет ограничений
Цитата:

либо скачать прокси, позволяющее увидеть пакет приема передачи из-под любого браузера
Вот здесь, я вас не понял. Как скачать прокси, это ведь сервер?

Deff 14.06.2012 15:59

Цитата:

Сообщение от eropov
Вот здесь, я вас не понял. Как скачать прокси, это ведь сервер?

IEInspector http://www.ieinspector.com/

eropov 14.06.2012 17:41

IEInspector тоже показывает (HttpOnly), значит все же есть ограничение?

Deff 14.06.2012 17:43

eropov,
Занчит есть ... я не напарывался

Вы в Инспекторе смотрите полный код Отправки формы ?

eropov 14.06.2012 18:08

Если в IE удалить куки и почистить кэш, то первый запрос пойдет с куками
Цитата:

(Request-Line) GET / HTTP/1.1
Accept image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Accept-Language ru
User-Agent Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MRSPUTNIK 2, 4, 0, 508; MRA 5.10 (build 5310); .NET CLR 1.1.4322; InfoPath.3; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; WebMoney Advisor; AskTbPTV2/5.9.1.14019)
Accept-Encoding gzip, deflate
Host secure.e-konsulat.gov.pl
Connection Keep-Alive
Cookie ASP.NET_SessionId=sfnl3butrl2xvi55soe1uxju
А в ответ получим
Цитата:

(Status-Line) HTTP/1.1 200 OK
Cache-Control private
Content-Type text/html; charset=utf-8
Server Microsoft-IIS/7.5
X-AspNet-Version 2.0.50727
X-Powered-By ASP.NET
Date Thu, 14 Jun 2012 13:56:40 GMT
Пробовал после первого запроса запускать JS, все тоже, куки FALSE.

Deff 14.06.2012 18:15

eropov,
Куки идентичны на всю сессию - Выставляются один раз

При смене куков - брауз обязан первый запрос посылать с обновленными куками

eropov 14.06.2012 18:26

Вопрос в том как их получить.
Цитата:

При смене куков - брауз обязан первый запрос посылать с обновленными куками
Как он их будет посылать, если их нет. Они появляются через ASP.NET?

Deff 14.06.2012 18:33

Цитата:

Сообщение от eropov
Как он их будет посылать, если их нет. Они появляются через ASP.NET?

Типовое: Какой пришел, такой и отправлен

eropov 14.06.2012 18:42

Цитата:

Типовое: Какой пришел, такой и отправлен
Как можно отправить того чего нет. Я писал выше о первом запросе, там отправляется на сервер кука, которой быть не должно, т.к. я удалил куки и почистил кэш, всего IE.
Вопрос далеко не в том, что отправил браузер, нужно получить куки ASP.NET_SessionId
Или я чего то не понял?

Deff 14.06.2012 19:53

eropov,
Отправьте кривой Ответ на сервер и смотрите кук в ИеIнспектор

eropov 14.06.2012 20:05

Картинку можно получить, она кэшируется на жесткий диск, только как узнать в какую папку? Тогда не нужно получать куки)

Deff 14.06.2012 20:29

Цитата:

Сообщение от eropov
Картинку можно получить, она кэшируется на жесткий диск, только как узнать в какую папку? Тогда не нужно получать куки)

Если поискать в Инете - можно найти для ИЕ и FF путь сохранения

Ксать в Опере заю, как сохранить страницу со всеми файлами картинок

Жмете на странице -Файл - сохранить как, с изображениями - тыкаете на рабочий стол, далее создаете папку -переносите туда,
Далее в настройках файлов нун отключить скрытие стандартных типов
И можно просмотреть файлы в папке с Изо

eropov 16.06.2012 04:51

Цитата:

Жмете на странице -Файл - сохранить как, с изображениями - тыкаете на рабочий стол, далее создаете папку -переносите туда,
Далее в настройках файлов нун отключить скрытие стандартных типов
Нужно сделать программно, потому что прога, которую я пишу работает с IE и сделать ее требуется полностью автоматизированной.


Часовой пояс GMT +3, время: 17:20.