Показать сообщение отдельно
  #1 (permalink)  
Старый 01.01.2013, 19:33
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

кроссдоменный обмен через анонимайзер + фрейм
Поскольку для проектов на коленках или оказания безвозмездной помощи душит жаба по написанию и использованию собственного прокси (требует денег и времени), - есть идея замены прокси существующими анонимайзерами.


================================================== =====================================
Идея позволяет: читать-писать контент и message на выбранном сайте,
производить авторизацию, ставить и исполнять скрипты.
================================================== =====================================



================================================== =====================================
Соль идеи такова:.
Все документы, подключенные через анонимайзер, - работают на одном домене..
Кроссдоменный обмен осуществляется с помощью фрейма frame1 с переключаемыми вкладками ("jumping tabs in frame"),
в котором находятся два документа-копии с текущего top.document, один из которых с тем же адресом, что и top.document, второй расположен на домене с анонимайзером.
Вкладки с документами обмениваются меж собой через window.name. В итоге, через данный фрейм осуществляется взаимодействия документов на домене с анонимайзером и документов на домене с top.document.


Начальная установка:

1. Скрипт для установки обмена один, первично расположен на главном документе, состоит из трех частей, работающих в соответствующих 'document-N '.
Нужная часть срабатывает по анализу соответствующего ключа "key" в текущем адресе документа.
Прим. Для 'addr0', используемого во фрейм-адресах, при наличии у top.document первоначального хеш(#...), - хеш удаляем;

2. Первоначально скрипт ставит фрейм frame0 с адресом anonimaiser+addr0+"#"+"key"+addr1,
где:
addr0 - адрес текущей страницы без хеша;
key - ключ - признак, необходимый для подключения и работы нужной части скрипта к соответствующему документу.
addr1 - адрес запрашиваемой страницы;

3. Часть скрипта работающего во фрейме frame0 ставит внутри себя фреймы: frame2 и frame1,
frame2 - ставится первым.
frame1 - ставится с первичным адресом anonimaiser+addr0+"#"+"key2";

4. document-2 во фрейме frame1 переключается на document-3 с адресом addr0+"#"+"key3";

5. По onload document-3 - запускаем callback функцию на document-0 об окончании установки фреймов.
----------------------------
Зы: После окончания установки и запуска возможно добавлением новых адресов одновременной связи
простым добавлением во frame0 - "еще один фрейм - еще один адрес"
И возможность организовать на клиенте сложносочиненный коммутируемый обмен меж этими сайтами.
================================================== ======


Обмен данными:


1. Обмен между документами: document-3 и document-0 лучше производить через LocalStorage, - это позволит продолжить сессию "кроссдоменного-обмена" после -закрытия/открытия/смены вкладки top.document.

2. "Jumping tabs in frame": Для организации обмена, вкладки с document-2 и document-3 переключаются туда-сюда.
....Обмен данными между вкладками с разных доменов во frame1 производится через window.name

3. Обмен между document-2 и document-4 лучше производить через функцию родительского frame0 function preset.
Данная функция выполняет предустановки для окна document-4 по onload при динамической смене адреса addr1,
(к примеру использовал для установки во frame2 по onload собственных стилей и библиотек jQuery),
а так же выполняет функции ожидания связи при запросе с document-4 на document-2 при включенной текущей вкладке document-3.
=========================================

Дополнение1:
Для ускорения загрузки фреймов: (document-1,document-2,document-3), сам скрипт ставим как можно ближе к началу страницы.
При наличии в текущем адресе вышеперечисленных ключей (key, key2, key3) в конце скрипта выполняем:
document.write('<style>body{display:none}</style><plaintext>'),
чем обрезаем излишний контент страницы во фреймах.
=========================================

Дополнение2:
Распространенные анонимайзеры бывают трёх типов кодирования адресных ссылок:

anonimaiser+"?..."+addr;
anonimaiser+"?..."+base64(addr);
И с включением адреса в доменное имя третьего уровня(пример http://anonymizer.ru/)

Для данной реализации подойдут лишь первых два типа.
=========================================

Дополнение3:
Кроссбраузерное LocalStorage => localStorage для IE6-7
функция base64: Подскажите символьный паккер, лучше чем base64
Cписок анонимайзеров http://ci-razvedka.ru/Anonymizer-v-k...-Razvedke.html
================================================== =====================================


Поскольку нет опыта в создании плагинов на чистом JS, - идея выложена как есть
для свободной реализации.

Последний раз редактировалось Deff, 12.01.2013 в 23:23.
Ответить с цитированием