Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
CGI-програмування
Чи хтось реально займався цьою штукою ?
Бо назріла задача, загальних описів ніби й багато, а от конкретної реалізації з
використанням авторизації на проксі - не знайшов. Сквід не впускає, свариться, і
правильно робить.
"Хелп мі ато хана" (с)
|
|
Андрій Пелещишин
Адміністратор
Повідомлень: 9191
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: Настрій не вказаний
|
|
Ну я займався.
Щодо авторизації на проксі я не зрозумів - а до чого тут CGI? CGI - це інтерфейс між
програмним середовищем та HTTP-сервером, а не проксі
|
|
volkorny
Дійсний член
Повідомлень: 104
Зареєстрований: 1-7-2002
Місто: Львів
Нема на форумі
Настрій: Настрій не вказаний
|
|
Напишіть деталі, допоможемо
|
|
Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
От власне така фігня.
Пробую виконати скріпт:
S TXT="GET /ost.php?rax=123456789&sum=9876 HTTP/1.0"_$C(10)
S TXT=TXT_"Proxy-Authorization: Basic "_code_$C(10)
S TXT=TXT_"Host: [url]http://www1.bank.lviv.ua"_$C[/url](10)
S TXT=TXT_$C(10)
(синтаксис трохи специфічний, але зрозумілий я так дУмаю)
Умова того скріпта - запускати зі середини корпоративної мережі, де є файервол
192.168.1.1 і порт доступу до HTTP 3128.
От. До змінної code передаю user:pass кодовані BASE64, все як пише документація. Ніби мало би
працювати, але ... на сквіді бачу, що йде запит БЕЗ_АВТОРИЗАЦІЇ !!!
Що я роблю неправильно ?
|
|
Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
Забув сказати, вказаний метод працює "з вулиці", де не втикається авторизація...
І ще. Не варто запускати по-за межами банку, бо цей ресурс "забетоновано" з точки
зору безпеки
|
|
Андрій Пелещишин
Адміністратор
Повідомлень: 9191
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: Настрій не вказаний
|
|
То то не CGI-програмування, а програмування Веб-клієнта.
Спробуй пакет libwww - там уже є автоматизація усіх основних дій по отриманню даних
зі сервера. У тому числі і робота через проксі-сервер.
Крім того, задається деякі пакети перла використовують змінну середовища (не
програми) HTTP_PROXY для визначення проксі
Синтаксис "http://127.0.0.1:3128"
|
|
Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
Я не маю наувазі ні перл ні жодну іншу конкретні мову програмування ... йдеться про
правильність заповнення заголовку і решти супутних параметрів для виконання
методів скрипта.
Вийняв я вказаний софт - 5.5М С-коду, знайти власне те що мені треба досить важко,
тому й питаю - чи РЕАЛЬНО хтось тим займався ?
|
|
Андрій Пелещишин
Адміністратор
Повідомлень: 9191
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: Настрій не вказаний
|
|
Ну бачиш, я такі речі робив, але за допомогою готових пакетів. Так - дещо (відсотків
на 90) простіше
|
|
Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
Один з варіантів - встановити локально файервол що вміє писати логи доступів, і
через нього пройтися звичайним бравзером. Тоді власне і відкриється вся "краса"
виконання одиничних команд ... певно й прийдеться це зробити, хоч як не хочеться
|
|
Андрій Пелещишин
Адміністратор
Повідомлень: 9191
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: Настрій не вказаний
|
|
Є ще такий варіант - поставити програмулю (собі на комп) Live HTTP - буде всю
комунікацію бровзера через HTTP показувати. І вже з неї наколупати потрібних
стрічок
|
|
Андрій Моравський
Академік
Повідомлень: 474
Зареєстрований: 17-8-2005
Місто: Львів
Нема на форумі
|
|
може поможе фрагмент який я користаю.... у мене з-під проксі воно працює...
Код: |
$Citylink = 'http://meteoprog.com.ua/ua/table.php?cityid=128&days=4';
print "\ndownloading\n\n";
my $u = $Citylink;
my $ua = LWP::UserAgent->new;
$ua->proxy('http' => 'http://10.97.0.254:3128');
$newagent = 'HTTP/1.0 ('.$ua->agent.')';
$ua->agent($newagent);
my $request = HTTP::Request->new(GET=>$u);
$request->proxy_authorization_basic("login", "password");
my $response = $ua->request($request);
print $response->status_line;
print "\n";
|
Про це йшлося? це правда LWP бібліотека... скачую сайт... але працює через проксі...
|
|
Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
Твій приклад дуже нагадує те, що мені треба, але не зрозуміло власне порядку
внесення команд у заголовок запиту, не видно - де вказується ІР проксі і ІР власне
сайту ... якщо є така змога - викинь інформацію замість порта у файл, затри строку
"login:password" і покажи
|
|
Андрій Моравський
Академік
Повідомлень: 474
Зареєстрований: 17-8-2005
Місто: Львів
Нема на форумі
|
|
а з заголовками - це, перепрошую, вже не до мене :-(
|
|
Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
Цитата: | Оригінальне повідомлення від Андрій Моравський
а з заголовками - це, перепрошую, вже не до мене :-( |
Я розумію, але ж запит GET, до якого ти навів приклад, без заголовка й не виконається,
тобто твоя прога якщо кидається через авторизацію формує той клятий заголовок !!!!
|
|
Андрій Пелещишин
Адміністратор
Повідомлень: 9191
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: Настрій не вказаний
|
|
може зразу готового бота візьмеш? http://www.w3.org/Robot/
А те, що тебе цікавить можливо є тут http://search.cpan.org/~gaas/libwww-perl-5.805/lib/LWP/UserAgent.pm
|
|
vovka
Почесний Академік
Повідомлень: 1075
Зареєстрований: 20-12-2002
Місто: Lviv,Ukraine
Нема на форумі
Настрій: впевнений
|
|
Постав php як cgi і використовуй бібліотеку curl. Там роботи на 5хв.
Для c++ теж ця бібліотека є.
Чи це на перлі обовязково зробити ?
|
|
Громов Сергій
Академік
Повідомлень: 568
Зареєстрований: 27-1-2003
Місто: Львів кут площі Ринок
Нема на форумі
Настрій: Вже краще
|
|
Нарешті я проблему вирішив. Наведу результати досліджень ...
Документація пише:
GET /control HTTP/1.1
Host: http://www1.bank.lviv.ua
Proxy-Authorization: Basic c2VyZ2=
Насправді для авторизації на проксі треба було:
GET http://www1.bank.lviv.ua/control HTTP/1.1
Proxy-Authorization: Basic c2VyZ2=
Решта параметрів заголовка принципового впливу на проблему що вирішувалася не
мають, тому я їх не вказав, хоча в реаліях варто формувати коректно і все.
Щира подяка всім хто допомагав !!
|
|