Форум Рідного Міста

CGI-програмування

Громов Сергій - 30-1-2006 у 17:30

Чи хтось реально займався цьою штукою ?

Бо назріла задача, загальних описів ніби й багато, а от конкретної реалізації з використанням авторизації на проксі - не знайшов. Сквід не впускає, свариться, і правильно робить.

"Хелп мі ато хана" (с)

Андрій Пелещишин - 30-1-2006 у 19:37

Ну я займався.

Щодо авторизації на проксі я не зрозумів - а до чого тут CGI? CGI - це інтерфейс між програмним середовищем та HTTP-сервером, а не проксі

volkorny - 30-1-2006 у 21:28

Напишіть деталі, допоможемо

Громов Сергій - 31-1-2006 у 11:28

От власне така фігня.

Пробую виконати скріпт:

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, все як пише документація. Ніби мало би працювати, але ... на сквіді бачу, що йде запит БЕЗ_АВТОРИЗАЦІЇ !!!

Що я роблю неправильно ?

Громов Сергій - 31-1-2006 у 11:31

Забув сказати, вказаний метод працює "з вулиці", де не втикається авторизація...

І ще. Не варто запускати по-за межами банку, бо цей ресурс "забетоновано" з точки зору безпеки :rolleyes:

Андрій Пелещишин - 31-1-2006 у 11:59

То то не CGI-програмування, а програмування Веб-клієнта.
Спробуй пакет libwww - там уже є автоматизація усіх основних дій по отриманню даних зі сервера. У тому числі і робота через проксі-сервер.
Крім того, задається деякі пакети перла використовують змінну середовища (не програми) HTTP_PROXY для визначення проксі
Синтаксис "http://127.0.0.1:3128"

Громов Сергій - 31-1-2006 у 13:09

Я не маю наувазі ні перл ні жодну іншу конкретні мову програмування ... йдеться про правильність заповнення заголовку і решти супутних параметрів для виконання методів скрипта.

Вийняв я вказаний софт - 5.5М С-коду, знайти власне те що мені треба досить важко, тому й питаю - чи РЕАЛЬНО хтось тим займався ?

Андрій Пелещишин - 31-1-2006 у 13:14

Ну бачиш, я такі речі робив, але за допомогою готових пакетів. Так - дещо (відсотків на 90) простіше :)

Громов Сергій - 31-1-2006 у 13:22

Один з варіантів - встановити локально файервол що вміє писати логи доступів, і через нього пройтися звичайним бравзером. Тоді власне і відкриється вся "краса" виконання одиничних команд ... певно й прийдеться це зробити, хоч як не хочеться :(

Андрій Пелещишин - 31-1-2006 у 13:28

Є ще такий варіант - поставити програмулю (собі на комп) Live HTTP - буде всю комунікацію бровзера через HTTP показувати. І вже з неї наколупати потрібних стрічок

Андрій Моравський - 2-2-2006 у 09:39

може поможе фрагмент який я користаю.... у мене з-під проксі воно працює...

Код:

$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 бібліотека... скачую сайт... але працює через проксі...

Громов Сергій - 2-2-2006 у 10:07

Твій приклад дуже нагадує те, що мені треба, але не зрозуміло власне порядку внесення команд у заголовок запиту, не видно - де вказується ІР проксі і ІР власне сайту ... якщо є така змога - викинь інформацію замість порта у файл, затри строку "login:password" і покажи :(

Андрій Моравський - 2-2-2006 у 10:28

а з заголовками - це, перепрошую, вже не до мене :-(

Громов Сергій - 2-2-2006 у 10:38

Цитата:
Оригінальне повідомлення від Андрій Моравський
а з заголовками - це, перепрошую, вже не до мене :-(


Я розумію, але ж запит GET, до якого ти навів приклад, без заголовка й не виконається, тобто твоя прога якщо кидається через авторизацію формує той клятий заголовок !!!!

Андрій Пелещишин - 2-2-2006 у 11:41

може зразу готового бота візьмеш? http://www.w3.org/Robot/

А те, що тебе цікавить можливо є тут http://search.cpan.org/~gaas/libwww-perl-5.805/lib/LWP/UserAgent.pm

vovka - 3-2-2006 у 01:07

Постав php як cgi і використовуй бібліотеку curl. Там роботи на 5хв.

Для c++ теж ця бібліотека є.

Чи це на перлі обовязково зробити ?

Громов Сергій - 3-2-2006 у 09:07

Нарешті я проблему вирішив. Наведу результати досліджень ...

Документація пише:

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=


Решта параметрів заголовка принципового впливу на проблему що вирішувалася не мають, тому я їх не вказав, хоча в реаліях варто формувати коректно і все.

Щира подяка всім хто допомагав !!