SASGIS - SAS.Планета
View Issue Details
0000366SAS.Планета[All Projects] Хотелкаpublic10-01-2011 15:5729-02-2012 11:49
Parasite 
zed 
highmajoralways
closedfixed 
WindowsXPSP3
101206 
110414110414 
0000366: Возможность определять headers сокетов
Некоторые карты невозможно скачать используя САС.планета БЕЗ указания некоторых конкретных полей заголоков сокета. Обычно это REFERRER:, но иногда (например на гугле) это также и COOKIE:, итд итп. Приходится проксифицировать запросы через собственный скрипт, что есть ненужность и доп.гимор.

Отсюда - хотелка: хотелось бы возможности определения\перекрытия пользовательских хидеров непосредственно в GetUrlScript (причем активного - вычисляемого\контролируемого скриптом, а не пассивного единожды заданного).
http headers, загрузка, закачка, паскальскрипт
parent of 0000123closed Garl Доработка карты (ZMP) Не работает ZMP от "Высоты (heywhatsthat.com)" 
parent of 0000305closed Garl Доработка карты (ZMP) Проблемы с тайлами спутника kosmosnimki.ru 
parent of 0000577closed Tolik SAS.Планета kosmosnimki.ru отображаются с квадратами 
related to 0000379closed vdemidov SAS.Планета Возможность использовать метод POST во встроенной качалке 
related to 0000596closed vdemidov SAS.Планета Возможность выполнять HTTP запросы из паскаль-скриптов 
Issue History
10-01-2011 15:57ParasiteNew Issue
10-01-2011 18:24GarlNote Added: 0000871
10-01-2011 18:38GarlRelationship addedrelated to 0000123
10-01-2011 18:38GarlNote Edited: 0000871bug_revision_view_page.php?bugnote_id=871#r272
11-01-2011 03:53ParasiteNote Added: 0000875
12-01-2011 18:11vdemidovStatusnew => acknowledged
12-01-2011 18:11vdemidovTarget Version => 29xxxx
12-01-2011 20:40dumpyNote Added: 0000889
22-01-2011 06:45ParasiteRelationship addedrelated to 0000379
11-03-2011 04:02ParasiteNote Deleted: 0000889
11-03-2011 04:03ParasiteTag Attached: загрузка
11-03-2011 04:03ParasiteTag Attached: закачка
16-03-2011 03:13gpsMaxTag Attached: http headers
23-03-2011 07:00TolikNote Added: 0001367
23-03-2011 10:42gpsMaxNote Added: 0001370
23-03-2011 10:45TolikNote Added: 0001371
23-03-2011 11:12TolikNote Added: 0001372
24-03-2011 06:00ParasiteNote Deleted: 0001370
24-03-2011 06:01ParasiteNote Deleted: 0001371
24-03-2011 06:01ParasiteNote Deleted: 0001372
24-03-2011 06:03ParasiteNote Added: 0001373
26-03-2011 16:23gpsMaxNote Added: 0001414
26-03-2011 20:40TolikNote Added: 0001419
28-03-2011 03:35ParasiteNote Added: 0001421
30-03-2011 05:08vdemidovCategoryБаг => Хотелка
30-03-2011 05:08vdemidovSummaryНевозможность определять headers сокетов => Возможность определять headers сокетов
07-04-2011 15:05zedNote Added: 0001601
07-04-2011 15:06zedNote Edited: 0001601bug_revision_view_page.php?bugnote_id=1601#r617
07-04-2011 15:06zedNote Edited: 0001601bug_revision_view_page.php?bugnote_id=1601#r618
07-04-2011 15:07zedNote Edited: 0001601bug_revision_view_page.php?bugnote_id=1601#r619
07-04-2011 15:08zedNote Edited: 0001601bug_revision_view_page.php?bugnote_id=1601#r620
07-04-2011 15:59TolikNote Added: 0001602
07-04-2011 16:05zedNote Added: 0001603
07-04-2011 17:03gpsMaxNote Added: 0001604
07-04-2011 17:58zedNote Added: 0001605
08-04-2011 05:55ParasiteNote Added: 0001608
08-04-2011 09:19zedNote Added: 0001609
08-04-2011 10:25ParasiteNote Added: 0001612
08-04-2011 10:51zedNote Added: 0001614
08-04-2011 11:05gpsMaxNote Added: 0001616
08-04-2011 14:21zedNote Added: 0001624
09-04-2011 06:45vdemidovNote Added: 0001650
09-04-2011 08:56zedNote Added: 0001653
09-04-2011 09:02vdemidovNote Added: 0001655
09-04-2011 09:38TolikNote Added: 0001657
09-04-2011 12:57gpsMaxRelationship addedparent of 0000305
09-04-2011 13:01gpsMaxRelationship replacedparent of 0000123
09-04-2011 13:27ParasiteNote Added: 0001664
09-04-2011 16:53zedNote Added: 0001667
09-04-2011 17:17vdemidovNote Added: 0001668
09-04-2011 17:39zedNote Added: 0001670
09-04-2011 17:46TolikNote Added: 0001671
09-04-2011 17:47zedNote Added: 0001672
09-04-2011 17:51zedNote Edited: 0001672bug_revision_view_page.php?bugnote_id=1672#r705
09-04-2011 18:52vdemidovNote Added: 0001674
09-04-2011 19:59ParasiteNote Added: 0001675
09-04-2011 20:11zedNote Added: 0001676
10-04-2011 19:01zedNote Added: 0001719
11-04-2011 05:29ParasiteNote Added: 0001729
11-04-2011 05:48TolikNote Added: 0001731
11-04-2011 05:49TolikNote Edited: 0001731bug_revision_view_page.php?bugnote_id=1731#r726
11-04-2011 07:11vdemidovStatusacknowledged => confirmed
11-04-2011 11:17zedNote Added: 0001754
11-04-2011 11:29TolikNote Added: 0001755
11-04-2011 20:01zedNote Added: 0001778
11-04-2011 20:04zedNote Edited: 0001778bug_revision_view_page.php?bugnote_id=1778#r744
11-04-2011 20:14gpsMaxNote Added: 0001780
11-04-2011 20:33zedNote Added: 0001783
11-04-2011 21:01gpsMaxNote Added: 0001784
12-04-2011 04:03TolikNote Added: 0001789
12-04-2011 04:06TolikNote Edited: 0001789bug_revision_view_page.php?bugnote_id=1789#r758
12-04-2011 04:09TolikNote Edited: 0001789bug_revision_view_page.php?bugnote_id=1789#r759
12-04-2011 04:49ParasiteNote Added: 0001797
12-04-2011 04:53TolikNote Added: 0001798
12-04-2011 05:37ParasiteNote Added: 0001801
12-04-2011 05:42TolikNote Added: 0001802
12-04-2011 15:12zedAssigned To => zed
12-04-2011 15:12zedStatusconfirmed => assigned
12-04-2011 15:13zedStatusassigned => resolved
12-04-2011 15:13zedFixed in Version => 110412
12-04-2011 15:13zedResolutionopen => fixed
12-04-2011 15:14zedNote Added: 0001825
12-04-2011 15:15zedNote Edited: 0001825bug_revision_view_page.php?bugnote_id=1825#r769
12-04-2011 15:46TolikNote Added: 0001829
12-04-2011 17:28zedNote Added: 0001832
12-04-2011 18:44GarlNote Added: 0001838
12-04-2011 19:45zedNote Added: 0001839
13-04-2011 05:46TolikRelationship addedrelated to 0000577
13-04-2011 05:47TolikRelationship deletedrelated to 0000577
13-04-2011 05:47TolikRelationship addedparent of 0000577
15-04-2011 07:50vdemidovFixed in Version110412 => 110414
15-04-2011 07:50vdemidovTarget Version29xxxx => 110414
15-04-2011 11:56zedRelationship addedrelated to 0000596
24-04-2011 18:24TolikStatusresolved => closed
29-02-2012 11:49gpsMaxTag Attached: паскальскрипт

Notes
(0000871)
Garl   
10-01-2011 18:24   
(edited on: 10-01-2011 18:38)
тогда у нас получится нормально тянуть космоснимки.
так же хотелось бы менять user-agent

(0000875)
Parasite   
11-01-2011 03:53   
>получится нормально тянуть космоснимки.
...и обойти бан в гугле (там динамический токен в хидерах отдавать надо, и никакого бана не будет), и многое другое тоже... :)
(0001367)
Tolik   
23-03-2011 07:00   
Хотелось бы поскорее получить возможность указывать заголовки в параметрах карты.
Может быть, хотя бы реализовать для начала статические, такие как referer, user-agent и т.п.
Давайте обсудим, как это должно выглядеть.

Например, в params.txt добавить поля:
referer
user-agent
cookie
keep-alive
connection
?
?

Либо добавить одно поле headers, в которое можно вставлять какие угодно заголовки?

Также надо бы составить список переменных для GetUrlScript
(0001373)
Parasite   
24-03-2011 06:03   
Господа, не нужно обсуждать посторонние продукты и рапортовать об удачах\неудачах с ними - в хотелке к сасу. Для этого есть форум, а тут - именно прикручивание конкретного функционала именно к сасу.
Почищено.
(0001414)
gpsMax   
26-03-2011 16:23   
Упоминание "посторонних продуктов"(хех, прямо как Майкрософт) имеет целью показать, что хотелка эта не самая горящая, и большей частью реализуемая обходными средствами.
(0001419)
Tolik   
26-03-2011 20:40   
"Посторонний продукт" (Proxomitron) - это костыль, а хотелка-таки горящая, позволит создавать нормальные, рабочие zmp.
(0001421)
Parasite   
28-03-2011 03:35   
>что хотелка эта не самая горящая, и большей частью реализуемая обходными средствами
Абсолютно любая из скреативленных тут хотелок может быть реализована обходными средствами (включая и весь САС как таковой) - что, собственно, постоянно и делается. Но это еще не значит, что в темах оных хотелок К САСу нужно устраивать анархию и ломки копий по СТОРОННИМ вариантам решения.

В очередной раз напоминаю, что багтреккер предназначен для обсуждений конкретных доработок именно САСа, и ни шагом в сторону. Все "обходные варианты" и прочие костыли просьба пилить на форуме.
(0001601)
zed   
07-04-2011 15:05   
(edited on: 07-04-2011 15:08)
В скриптах теперь будет доступна строковая переменная RequestHead, которой можно присваивать хидеры (а можно и не трогать, тогда будут дефолтные).

Пример использования:

RequestHead := 'User-Agent: Some User Agent' +#$0D#$0A+'Referer: www.test.com'+#$0D#$0A;

(0001602)
Tolik   
07-04-2011 15:59   
Супер! А в какой версии?
(0001603)
zed   
07-04-2011 16:05   
Уже в следующем релизе.
(0001604)
gpsMax   
07-04-2011 17:03   
А динамически изменять эту переменную можно?
(0001605)
zed   
07-04-2011 17:58   
Опишите вариант "динамического" изменения, а то не очень понятно что имеется в виду. ResultUrl вы можете изменять динамически? Вот с RequestHead будет точно так же.
(0001608)
Parasite   
08-04-2011 05:55   
Для работы с куками\сессиями нужна возможность где-то хранить оные куки\сессии в пределах нескольких запросов САС<->скрипт либо в пределах времени валидности данной сессии\куки. На настоящий момент, как я понимаю, скрипт переинициализируется при каждом новом вызове его САСом? Тогда придется тянуть по новой куке каждый раз при вызове скрипта (читай: на каждый тайл просить по куке).

Можно конечно писать куку+таймштамп в темп-файл и читать со скрипта при к.вызове, но это сработает лишь в один поток скачки. Как только появится второй поток скачки на тот же сервис - поимеем траблов с доступом к темп-файлу. Можно также писать и в БД - но это весьма сильное усложнение всей задачи, хоть работать конечно и будет.

В идеале, надо бы возможность отправлять пользовательские данные в САС как в буфер, а при следующем вызове скрипта - отдавать скрипту также и этот буфер. Будет там кука, специальные хидеры или "Тут был Вася™" - это разбирать на нужные параметры уже в самом скрипте. От САСа требуется лишь получать от скрипта _возможные_ данные, и при их наличии - отдавать это всё следующему скрипту при его инициализации, всё. Разбивка этого блока данных на пары "параметр:значение" - на усмотрение скриптопейсателя.

PS: так же можно передавать между разными вызовами скриптов и ранее запрошенные другим оратором дескрипторы, и что угодно еще появится там в будущем (но что-то мне подсказывает, что при выходе из скрипта PHP таки автоматически закроет все открытые коннекты\дескрипторы\хэндлеры за собой. Но не уверен, утверждать не возьмусь).
(0001609)
zed   
08-04-2011 09:19   
Parasite, у тебя всё смешалось в кучу - и люди, и кони.
Каким боком БД и дескрипторы PHP в паскаль-скриптах, о коих здесь, собственно, и речь?
(0001612)
Parasite   
08-04-2011 10:25   
>дескрипторы PHP в паскаль-скриптах, о коих здесь, собственно, и речь?
Покажи мне выше в теме хоть одно слово "Паскаль"? Единственные скрипты, которыми ты занимался в плане САСа - это PHP-скрипты. Я так и понял, что речь пошла именно про них. Если сие не так - надо было прямо и указывать, что конкретно пилим.

PS: предыдущая моя мессага была именно за PHP, да. Если тут за Паскаль - удаляем пост (но про PHP ты таки имей ввиду тем не менее, вышеописанные грабли-то никуда не денутся...)
(0001614)
zed   
08-04-2011 10:51   
Не важно чем я занимался или занимаюсь. Ты просил дать возможность в GetUrlScript (а это ничто иное, как паскаль-скрипт) влиять на хидеры запросов. Теперь такая возможность будет.

P.S. Если что, добавить фичу оказалось довольно легко - на весь процесс, включая тестирование, ушло не более получаса, так что от PHP я сильно не отвлекался.
(0001616)
gpsMax   
08-04-2011 11:05   
>Опишите вариант "динамического" изменения, а то не очень понятно что имеется в виду.
Да, я имел в виду именно тупо возможность изменения, спасибо. Parasite, однако, поднял хороший вопрос про сессии.
(0001624)
zed   
08-04-2011 14:21   
И откуда планируется эту самую сессию брать? Её ведь, чтоб передать из одного скрипта в другой (что само по себе элементарно и занимает не более 5 мин. кодинга), нужно наполнить ещё какими-то данными?
В любом случае, это будет уже совершенно новая хотелка.

И, к слову, для тех кто невнимательно следит за процессом прикручивания PHP: там с передачей сиссий между скриптами уже сейчас нет никаких проблем.
(0001650)
vdemidov   
09-04-2011 06:45   
Zed я эти твои последние изменения включу в релиз, но ты их реально тестил? Смотрел чего там гуляет по сети? Просто юзер агент передается не при запросе конкретного тайла, а при подключении к серверу, насколько я помню. И ты его не убирал.
(0001653)
zed   
09-04-2011 08:56   
>но ты их реально тестил
Естественно.
>Просто юзер агент передается не при запросе конкретного тайла, а при подключении к серверу
Не передаётся, а устанавливается. Это разные вещи. Устанавливается он где-то в глубинах свойств wininet, и затем при запросе каждого тайла извлекается из глубин и только потом передаётся серверу (всё средствами самого wininet).
Хидеры там (в SAS) тоже не передаются, а устанавливаются. И юзер агент из установленных хидеров имеет приоритет перед установленным ранее юзер-агентом. Так что, в конечном итоге на сервер всё уходит правильно.
>И ты его не убирал.
Да, иначе его пришлось бы писать в каждом скрипте, а так - лишь при желании его переопределить.
(0001655)
vdemidov   
09-04-2011 09:02   
Ну я бы еще добавил подчитывание юзерагента и дефолтных хидеров из змп. И возомжно стоит добавить их хранение в maps.ini по аналогии с BaseUrl и возможность редактирования в параметрах карты.
(0001657)
Tolik   
09-04-2011 09:38   
Давайте я потестирую этот билд
(0001664)
Parasite   
09-04-2011 13:27   
>Не важно чем я занимался или занимаюсь. Ты просил дать возможность в GetUrlScript (а это ничто иное, как паскаль-скрипт)
На момент создания тикета никаких разговоров про скрипты к САСу не было ВООБЩЕ, и тикет написан именно с того положения дел.
Потом (на момент появления последующего камента) они уже были, и были про PHP, и были по счастливой случайности именно от тебя. А по телепатии у меня всегда была тройка. :)

>И откуда планируется эту самую сессию брать?
Из самого первого вызова скрипта, кой (не получив буфера от САСа) ее и заполнит и отдаст в буфер, и этот буфер потянется во все последующие вызовы - периодически меняясь во времени, когда куку надо будет обновлять. Это уже задача скрипта - передавать и таймштампы, и что угодно еще. Было бы через что передавать.

PS: господа, а тикет http://sasgis.org/mantis/view.php?id=365 - с данным связан, или пускай отдельно валяется? А то я б прилинковал бы сюда и его тоже.
(0001667)
zed   
09-04-2011 16:53   
vdemidov
>Ну я бы еще добавил подчитывание юзерагента и дефолтных хидеров из змп
Это по-моему лишнее - хидеры определяются один раз и в ручном редактировании уже не нуждаются (это ведь не url, в котором версии меняются через неделю). А если вдруг и захочется поправить что-то - ручками в zmp. Но это крайне редкая и маловероятная ситуация, чтоб ради неё разводить кучу настроек.

Parasite
>Было бы через что передавать.
Нет, как раз наоборот - было бы ЧТО передавать, а передать не проблема. На данный момент у паскаль-скриптов сильно ограничены возможности в плане "получить от сервера куки". Или точнее, такой возможности вообще нет, потому и возможность хранить что-то в буфере и передавать между скриптами на ДАННЫЙ момент абсолютно бесполезна.

>господа, а тикет http://sasgis.org/mantis/view.php?id=365 [^] - с данным связан
Нет. Да и работает оно вроде по https.

Моё мнение - с этой хотелкой покончено, можно закрывать как решённую. Но наравне с хотелкой 0000379 (про post запросы) нужно открывать новую, про получение cookie от сервера и там уже разводить холивары про что да как.
(0001668)
vdemidov   
09-04-2011 17:17   
>Это по-моему лишнее - хидеры определяются один раз и в ручном редактировании уже не нуждаются
Ну это может понадобиться например, что бы задавать можно было куку руками. Пригодится для особо клинических способов задания куки джаваскриптами. Тоесть смотрим в браузере куку и вбиваем в настройки карты. А если вбибвать можно будет только в скрипте придется перезапускать программу.
(0001670)
zed   
09-04-2011 17:39   
>куку руками
Действительно клинический случай. Но с другой стороны - открыть браузер, запустить нужную карту, проснифить запрос, скопировать куки - довольно много действий, и перезапуск SAS и редактирование zmp не самые трудные из них. Хотя, закачка наверное тормознётся.

В любом случае, в GUI я пока что лезть опасаюсь, так что это без меня как-нибудь.
(0001671)
Tolik   
09-04-2011 17:46   
Хотя в большинстве случаев хватило бы и статического определения хедеров в params.txt, данное решение (RequestHead) мне кажется вполне универсальным и достаточным.

Кстати, вопрос о синтаксисе: можно ли использовать \r\n или только #$0D#$0A?
(0001672)
zed   
09-04-2011 17:47   
(edited on: 09-04-2011 17:51)
>можно ли использовать \r\n
Нет.

P.S. Вот она "прелесть" паскаль-скриптов - разрешено лишь то, о чём явно позаботился разработчик. Шаг в сторону - расстрел. (с)

(0001674)
vdemidov   
09-04-2011 18:52   
> открыть браузер, запустить нужную карту, проснифить запрос, скопировать куки
Обычно снифить не нужно. В той же опере можно посмотреть установленные для текущей страницы куки.
(0001675)
Parasite   
09-04-2011 19:59   
>как раз наоборот - было бы ЧТО передавать, а передать не проблема. На данный момент у паскаль-скриптов сильно ограничены
Вроде ж выяснили выше, что про передачу куков между скриптами было [ошибочно] запощено касаемо PHP, а не паскаля. Про паскаль я пас, не в теме.

Может отделить этот вопрос (касаемо PHP) тебе в тему на форум? А то тут от него одна путаница, а стирать неохота - вопрос таки требует твоего внимания.
(0001676)
zed   
09-04-2011 20:11   
>Вроде ж выяснили выше, что про передачу куков между скриптами было [ошибочно] запощено касаемо PHP
О, я ж вроде бы ясно сказал, что здесь разговор ТОЛЬКО про паскаль-скрипты. Никаких PHP я и близко не упоминал, что ты к ним тут привязался?

>Может отделить этот вопрос (касаемо PHP) тебе в тему на форум?
Отделять ничего не надо. Там эти вопросы уже решены.
(0001719)
zed   
10-04-2011 19:01   
А, гулять так гулять! Сделал возможность получать хидеры ответа сервера - будут в переменной ResponseHead, и добавил буфер в который можно писать что-нибудь и передавать в скрипт при следующем запуске (строковая переменная ScriptBuffer).

Теперь, наверное, надо будет добавить пару функций для работы со строками: length, pos, copy, и если уж совсем разгуляться - добавить регэкспы?
(0001729)
Parasite   
11-04-2011 05:29   
Да это просто праздник какой-то....
(0001731)
Tolik   
11-04-2011 05:48   
(edited on: 11-04-2011 05:49)
ResponseHead - это строка, в ней все хедеры, разделённые \n\r?
Может ещё и парсер прикрутите? :) (Или он уже есть?)

Прям руки чешутся попробовать :)

(0001754)
zed   
11-04-2011 11:17   
>ResponseHead - это строка, в ней все хедеры, разделённые \n\r?
Да.

>Может ещё и парсер прикрутите
Что он должен делать конкретно и в каком виде должен получиться результат?
(0001755)
Tolik   
11-04-2011 11:29   
Результат - например,
ParseHeader(ResponseHead, "Content-Type") = "image/jpeg". Типа того.
(0001778)
zed   
11-04-2011 20:01   
(edited on: 11-04-2011 20:04)
Добавил 7 функций для работы со строками:
function Length(Str: string): integer
function GetAfter(SubStr, Str: string): string
function GetBefore(SubStr, Str: string): string
function GetBetween(Str, After, Before: string): string
function SubStrPos(const Str, SubStr: String; FromPos: integer): integer
function RegExprGetMatchSubStr(const Str, MatchExpr: string): string
function RegExprReplaseMatchSubStr(const Str, MatchExpr, Replase: string): string

Пример использования:

const
  CRLF = #$D#$A;
begin
Astr := 'Connection: Close' + CRLF + 'User-Agent: TestUserAgent' + CRLF;

'Length=' + inttostr(Length(AStr)) + CRLF +
'GetAfter=' + GetAfter('User-Agent', AStr) + CRLF +
'GetBefore=' + GetBefore('User-Agent', AStr) + CRLF +
'GetBetween=' + GetBetween(AStr, 'Connection', 'User-Agent') + CRLF +
'SubStrPos=' + inttostr(SubStrPos(AStr, CRLF, 20)) + CRLF +
'RegExprGetMatchSubStr=' + RegExprGetMatchSubStr(AStr, 'Connection:(.*?)\r\n') + CRLF +
'RegExprReplaseMatchSubStr=' + RegExprReplaseMatchSubStr(AStr, 'Connection:(.*?)\r\n', 'Connection: Keep-Alive'+CRLF);

Результат:

Length=46
GetAfter=: TestUserAgent#$D#$A
GetBefore=Connection: Close#$D#$A
GetBetween=: Close#$D#$A
SubStrPos=45
RegExprGetMatchSubStr= Close
RegExprReplaseMatchSubStr=Connection: Keep-Alive#$D#$AUser-Agent: TestUserAgent#$D#$A

Так же, доступны стандартные функции copy (http://www.delphibasics.ru/Copy.php) и pos (http://www.delphibasics.ru/Pos.php)

(0001780)
gpsMax   
11-04-2011 20:14   
Круто. Только чуть косметически допилить вот это:

> GetAfter=: TestUserAgent#$D#$A

Народ, в общем-то, интересует получить из ответа значение заголовка по его имени. Собственно, это писали и выше. Чтобы каждый раз не писать лишние конструкции, нужна отдельная целевая функция, типа

GetHeader('User-Agent', AStr)

Вот отпилить от результата с GetAfter двоеточие, пробел(возможно, его не будет или он будет не один), и перенос строки, и будет конфетка.
(0001783)
zed   
11-04-2011 20:33   
Более универсальная функция RegExprGetMatchSubStr - составляете регулярное выражение и получаете искомое.
(0001784)
gpsMax   
11-04-2011 21:01   
Универсальная, но не удобная.
(0001789)
Tolik   
12-04-2011 04:03   
(edited on: 12-04-2011 04:09)
> GetHeader('User-Agent', AStr)
В точности то же двумя постами выше (note 1755).

Однако мы увлеклись теорией. Можно написать сколько угодно функций, а реально это нужно?
В какой конкретно карте мы будем (точнее, нам необходимо) анализировать заголовки response?
Parasite упоминал какие-то хитрые куки в Гугле, что именно нужно для их вычисления?

> function RegExprReplaseMatchSubStr(const Str, MatchExpr, Replase: string): string
Пожалуйста, исправьте replase на replace
(please replace replase with replace :))

(0001797)
Parasite   
12-04-2011 04:49   
>Результат - например, ParseHeader(ResponseHead, "Content-Type") = "image/jpeg". Типа того.
Читай: не зная названия конкретного поля - ты его и не узнаешь, пока в сниффер (сторонний продукт, от которых мы и желаем избавляться тут) не полезешь и не увидишь как он пишется и что конкретно отдает. :)
Получая же весь массив заголовков в скрипт - получаем все поля текстом, разбирай\парсь скриптом какие угодно и как угодно - не хочу. Любые возможные извращения на лету при парсинге опять же - доступны, а не только так как соизволит скомпилированный (неизменяемый) САСовский парсер.

>Parasite упоминал какие-то хитрые куки в Гугле, что именно нужно для их вычисления?
Нужны просто ровные руки и парсер строки из текста (на Перле - половина строчки регекспом), плюс возможность манипуляции хидерами на базе выпарсенных строк. :) Также нужна возможность запрашивать посторонние УРЛы, а не только графику начинающуюся с BaseURL - в частности, веб-страницы (Content-Type: text/html) и уметь с ними работать как с текстом.

PS: Вопрос тонкой ломки Гугля, как я понимаю - выходит за рамки данного тикета.
(0001798)
Tolik   
12-04-2011 04:53   
Вопрос ломки гугла, конечно, выходит. А вопрос о необходимых для этого инструментах как раз сюда.

Достаточно ли для этого ResponseHead, RequestHead и прямых рук?
Я так понял, что нет, нужно ещё формировать посторонние запросы, т.е. в рамках данного тикета проблему не решить?
(0001801)
Parasite   
12-04-2011 05:37   
>нужно ещё формировать посторонние запросы, т.е. в рамках данного тикета проблему не решить?
На паскальскрипте - без понятия, я на нем почти не размовляю. На ранееупомянутом PHP\Перле сабж делается буквально за 10-15минут с перерывами на пиво.

Для гугла - да, понадобятся посторонние запросы. Для других сервисов - зависит уже от них. В любом случае - сабж нужный и полезный хотя бы для переназначения Referrer\UserAgent и проч (что обычно делается разово и доп.запросы в этом случае не нужны).

А для более сложных случаев (типа Гугла, или вон vdemidov куки с яваскрипта упоминал) - там уже надо будет развивать тему. Предлагаю сперва ввести и отладить возможность "чуть менее чем статичных" хидеров. :)
(0001802)
Tolik   
12-04-2011 05:42   
В таком случае ПОКА нам достаточно строки RequestHead.

ResponseHead и строковые функции, конечно, пусть тоже будут, может и пригодятся.
Пора в релиз ;)
(0001825)
zed   
12-04-2011 15:14   
(edited on: 12-04-2011 15:15)
>Пожалуйста, исправьте replase на replace
Исправил.

Добавил так же возможность устанавливать хидеры и из zmp:
RequestHead=Referer: maps.kosmosnimki.ru#13#10

(0001829)
Tolik   
12-04-2011 15:46   
Без кавычек? А если несколько хедеров, то как писать? Всё в одну строку? Лимита на длину нет?
А если и в params.txt, и в GetUrlScript.txt вставить RequestHead, какой будет результат?

Вы уж, пожалуйста, не забудьте к релизу подготовить описание всех нововведений.
(0001832)
zed   
12-04-2011 17:28   
Немного подправил, теперь нужно писать так: RequestHead=Referer: maps.kosmosnimki.ru\r\nConnection: Close\r\n (всё в одну строку, без всяких кавычек. Разделитель строк (\r\n) в самом конце можно не ставить)

>А если и в params.txt, и в GetUrlScript.txt вставить RequestHead, какой будет результат?
Из GetUrlScript.txt
(0001838)
Garl   
12-04-2011 18:44   
длина строки учитывается? а то у мну набирается длина больше 400 символов в строке.
(0001839)
zed   
12-04-2011 19:45   
Да вроде если не более 1024 байт должно отрабатывать без вопросов. А дальше - опытным путём.