Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EmbeddedWB, как не загружать с другого домена 
V
    Опции темы
lollollollol
Дата 21.3.2013, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Снова всех приветствую.

Добился стабильной работы от EmbeddedWB, избавился от утечки памяти, и похоже осталась финальная загвоздка.
Сайт, который загружается в EmbeddedWB подгружает какие-то картинки и js с другого домена, но тот домен по неизвестным причинам не работает.
Результат - долго пытается загрузить страничку.

Я хочу сделать так, чтобы EmbeddedWB не загружал никаких файлов со сторонних доменов.
Например я открываю сайт http://vasya.com/
На этом сайте выполняется загрузка картинок,js,css не только с домена http://vasya.com/, но и с http://blabla.com/
Нужно сделать чтобы загрузка скриптов и картинок выполнялась только с домена http://vasya.com/.

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

Прошу помощи, кто чем может
PM MAIL   Вверх
lollollollol
Дата 21.3.2013, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Ничего в голову не приходит... Можно конечно создать socks на 127.0.0.1:Любой порт, настроить работу через прокси, и уже на уровне прокси фильтровать куда пускать запрос, но я считаю это уже изврат высшей степени.

Должна быть другая возможность решить проблему
PM MAIL   Вверх
lollollollol
Дата 22.3.2013, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Ещё думал может изменить html таким оразом, чтобы там небыло ссылок на другие домены, но ведь браузер вначале всё загружает
PM MAIL   Вверх
lollollollol
Дата 23.3.2013, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Я вот подумал, может быть можно достучаться до функций которые выполняют парсинг ссылок перед тем как браузер начнёт грузить необходимые файлы, прописаные в html? Не удаётся найти, есть ли смысл копать  этом направлении, или за это ядро IE отвечает?
PM MAIL   Вверх
Чучмек
Дата 25.3.2013, 08:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(lollollollol @  23.3.2013,  06:30 Найти цитируемый пост)
Я вот подумал, может быть можно достучаться до функций которые выполняют парсинг ссылок перед тем как браузер начнёт грузить необходимые файлы, прописаные в html

Перехвати gethostbyname (getaddrinfo) и connect из WS2_32.dll


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
lollollollol
Дата 25.3.2013, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Эт как перехватить? Я ради интереса делал подобное год назад, но я там свою функцию перехватывал:
Менял адрес вызова функции, и выполнял свою функцию
Сейчас попробую так сделать. Или существуют стандартные методы перехвата, чтото типа дополнительного uses?
PM MAIL   Вверх
Чучмек
Дата 25.3.2013, 20:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(lollollollol @  25.3.2013,  20:01 Найти цитируемый пост)
чтото типа дополнительного uses

Можешь пока воспользоваться моим.
Код

uses ...,FunctionPatch;
...
function old_connect(s: TSocket; var name: TSockAddr; namelen: Integer): Integer; stdcall;
asm
db '000000000000000000000000000000000000000000000000';
end;
function my_connect(s: TSocket; var name: TSockAddr; namelen: Integer): Integer; stdcall;
begin
Result:=old_connect(s,name,namelen);
end;
...
begin
Patch('WS2_32.dll','connect',@my_connect,@old_connect);
...




Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  FunctionPatch.7z 2,29 Kb


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
lollollollol
Дата 25.3.2013, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Спасибо, завтра отпишу что получилось
PM MAIL   Вверх
lollollollol
Дата 26.3.2013, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Спасибо большое!

Как появилось время сразу решил сделать, и всё получилось. 
Правда мне удобнее было перехватывать функцию getaddrinfo, сделал по Вашему примеру, всё сразу заработало так как и ожидалось! 

Ещё раз большое спасибо!
PM MAIL   Вверх
Чучмек
Дата 26.3.2013, 09:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(lollollollol @  26.3.2013,  08:09 Найти цитируемый пост)
Правда мне удобнее было перехватывать функцию getaddrinfo

IE6 использует gethostbyname. Для совместимости необходимо перехватывать и эту функцию.


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
lollollollol
Дата 26.3.2013, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



у меня ие8, getaddrinfo работает, если я сделаю gethostbyname, на ие 8 тоже будет работать?


PM MAIL   Вверх
Чучмек
Дата 26.3.2013, 16:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(lollollollol @  26.3.2013,  16:06 Найти цитируемый пост)
на ие 8 тоже будет работать
 если только getaddrinfo - нет.
Необходимо перехватывать обе функции.

Добавлено через 2 минуты и 28 секунд
Какой алгоритм используешь?


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
lollollollol
Дата 26.3.2013, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Поясни принцип работы, а то чтото торможу.

Вот есть 3 функции, 

Код


  Patch('WS2_32.dll','gethostbyname',@my_gethostbyname,@old_gethostbyname);
  Patch('WS2_32.dll','getaddrinfo',@my_getaddrinfo,@old_getaddrinfo);
  Patch('WS2_32.dll','connect',@my_connect,@old_connect);

Код

function old_gethostbyname(name: PChar): PHostEnt; stdcall;
asm
  db '000000000000000000000000000000000000000000000000';
end;

function old_getaddrinfo(nodename, servname: PChar; hints: paddrinfo; var res: paddrinfo): integer; stdcall;
asm
  db '000000000000000000000000000000000000000000000000';
end;

function old_connect(s: TSocket; var name: TSockAddr; namelen: Integer): Integer; stdcall;
asm
  db '000000000000000000000000000000000000000000000000';
end;


Что происходит когда они вызываются? 
Строка   db '000000000000000000000000000000000000000000000000'; за что отвечает?


Это сообщение отредактировал(а) lollollollol - 26.3.2013, 16:48
PM MAIL   Вверх
Чучмек
Дата 26.3.2013, 17:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(lollollollol @  26.3.2013,  16:46 Найти цитируемый пост)
Строка   db '000000000000000000000000000000000000000000000000'; за что отвечает?

Резервирует место

Добавлено через 6 минут и 14 секунд
По адресу перехватываемой функции записывается переход на my_function
По адресу old_function переносится часть кода из перехватываемой, которая затирается переходом, и переход на оставшийся код.


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
lollollollol
Дата 26.3.2013, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Цитата

По адресу перехватываемой функции записывается переход на my_function
По адресу old_function переносится часть кода из перехватываемой, которая затирается переходом, и переход на оставшийся код. 

Да, сам алгоритм я понял, меня смутило то что во всех случаях одна строка кода выполняется
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.