The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Замена ссылок в странице на кодированные"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Perl)
Изначальное сообщение [ Отслеживать ]

"Замена ссылок в странице на кодированные"  +/
Сообщение от DM (??) on 26-Мрт-14, 09:42 
Коллеги,

Пищу простенький анонимайзер на Perl

Как заменить все ссылки в странице $Page на кодированные Base64?

Туплю, и дальше $Result =~ s/(http:\/\/.+?)//g; дело не движется..

Как между слешами // вставить функцию code_base64()?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Замена ссылок в странице на кодированные"  +/
Сообщение от Pahanivo (ok) on 26-Мрт-14, 11:49 
цината из нагугленого мана:

например нужно переделать все escape последовательности, для этого вызывается соответствующая подпрограмма:
$text =~ s/(&.*?;)/&esc2char($1)/egs;
т.е. из регулярного выражения происходит вызов подпрограммы.

а вообще зачем именно в регексе это делать - разберите, измените, соберите.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Замена ссылок в странице на кодированные"  +/
Сообщение от михалыч (ok) on 26-Мрт-14, 13:17 
> Коллеги,
> Пищу простенький анонимайзер на Perl
> Как заменить все ссылки в странице $Page на кодированные Base64?
> Туплю, и дальше $Result =~ s/(http:\/\/.+?)//g; дело не движется..
> Как между слешами // вставить функцию code_base64()?

Использовать модификатор e
а поиграем в сноудена? ))

#!/usr/bin/perl

use strict;
use warnings;
use MIME::Base64;

my $url = "http://ya.ru";

$url =~ s/($url)/encode_base64($1)/e;
print $url;

вот, ещё сюда можно глянуть => http://www.jmarshall.com/tools/cgiproxy/
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Замена ссылок в странице на кодированные"  +/
Сообщение от Pahanivo (ok) on 26-Мрт-14, 13:31 
>[оверквотинг удален]
>> Как между слешами // вставить функцию code_base64()?
> Использовать модификатор e
> а поиграем в сноудена? ))
>
#!/usr/bin/perl 
> use strict;
> use warnings;
> use MIME::Base64;
> my $url = "http://ya.ru";
> $url =~ s/($url)/encode_base64($1)/e;
> print $url;
вот, ещё сюда можно глянуть => http://www.jmarshall.com/tools/cgiproxy/

зачем тут вообще регекс? )

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Замена ссылок в странице на кодированные"  +/
Сообщение от михалыч (ok) on 26-Мрт-14, 13:35 
> зачем тут вообще регекс? )

шифруемся же, код тоже должен быть запутанным ))

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Замена ссылок в странице на кодированные"  +/
Сообщение от DM (??) on 26-Мрт-14, 14:06 
>> зачем тут вообще регекс? )
> шифруемся же, код тоже должен быть запутанным ))

Сваял)))))):
$Result =~ s,(http://.+?)(?=\s|['"]),"/cgi-bin/anon.cgi?session=".encode_base64($1),ge;

Только после замены, перед последней кавычной переносит строку:
<img src="/cgi-bin/zewa.cgi?session=aHR0cDovLzIxNy4xNzIuMTguMjQxOjE1MTIxL2JhbXQvb2sucG5n
">

В принципе, работает и так, но для красоты хотелось бы перенос убрать. Откуда он вообще??

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Замена ссылок в странице на кодированные"  +/
Сообщение от михалыч (ok) on 26-Мрт-14, 14:45 
>>> зачем тут вообще регекс? )
>> шифруемся же, код тоже должен быть запутанным ))
> Сваял)))))):
> $Result =~ s,(http://.+?)(?=\s|['"]),"/cgi-bin/anon.cgi?session=".encode_base64($1),ge;
> Только после замены, перед последней кавычной переносит строку:
> <img src="/cgi-bin/zewa.cgi?session=aHR0cDovLzIxNy4xNzIuMTguMjQxOjE1MTIxL2JhbXQvb2sucG5n
> ">
> В принципе, работает и так, но для красоты хотелось бы перенос убрать.
> Откуда он вообще??

Читаем ОПИСАНИЕ к http://search.cpan.org/~gaas/MIME-Base64-3.14/Base64.pm

Кодирование данных производится путём вызова функции encode_base64().
Первым аргументом является строка байтов для кодирования.
Вторым аргументом является использование последовательности конца строки.
Это необязательный параметр и по умолчанию "\n". Возвращаемая закодированная строка
разбивается на строки не более чем 76 символов каждая и всё это заканчивается с $eol,
если она не пуста. Передайте пустую строку в качестве второго аргумента, если вы не
хотите, чтобы закодированная строка разбивалась на подстроки (части).

Функция будет вызывать croak с "Wide character in subroutine entry", если $bytes содержит
символы с кодом выше 255. Кодирование base64 определяется только для однобайтовых символов.
Используйте модуль Encode, чтобы выбрать кодировку байт, кторую вы хотите.

hint encode_base64($1,"")

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Замена ссылок в странице на кодированные"  +/
Сообщение от DM (??) on 26-Мрт-14, 16:13 
> hint encode_base64($1,"")

Ох уж этот Перл.. Думаешь - баг, а оказывается это фича..

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру