Просмотр полной версии : получение данных из iframe
Суть проблемы в том как получить данных из iframe, iframe грузиться с другого подомена, уже все излазил, везде написано что не возможно, но нет таких вещей которые не льзя сделать...
Joker-jar
02.06.2007, 13:54
Правильно говорят. Это сделанно из соображения безопасности. Точно также, как и нельзя Value у <input type="File"> поменять и засабмитить его :)
На серваке отключены сокеты, мне нужно взять с друго сайта страницу и сохранить ее у себя, точнее просто прочитать данные с того сайта, и обработать их...
Joker-jar
02.06.2007, 14:01
Имхо, для file_get_contents (http://ru2.php.net/manual/ru/function.file-get-contents.php) библиотека php_sockets не нужна, хотя могу ошибаться
например необходимо во фрейм загрузить данные с яндекс погоды, потом при помощи явы считать его как текст, а потом уже распоряжаться им на мое усмотрение
Joker-jar
02.06.2007, 14:05
Юзай Ajax
Приведи конкретный пример, а то я в яве не силен :)
*** да, все делается в браузере, но прокси не получается использовать, т.к. отрублены сокеты - safe mode мать его
Joker-jar
02.06.2007, 14:16
<html>
<head>
</head>
<body>
<script>
function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest();
}
else
if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
alert(xmlHttp.responseText);
}
}
xmlHttp=GetXmlHttpObject();
var url="http://ya.ru";
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
</script>
</body>
</html>
Получаем исходник ya.ru... В ИЕ работает в Опере нет.
Joker-jar
02.06.2007, 14:18
Как ты думаешь, я прежде чем запостить проверил или нет?
И так полная инфа...
У меня загружается определеный адрес в ифрайм, мне нужно при помощи явы, считать полностью весь текс который загрузился в ифрайм со сторонего сайта, и передать содержимое скрипту для обработки полученых данных с ифрайма.
Можно было бы проще открыть адрес через сокеты и считать страницу, только сервак работает в SAFE_MODE и сокеты отрублены.
P.S. Блин получается как масло масленое...)))
Joker-jar
02.06.2007, 14:21
Я говорю, проверь file_get_contents, потому что она, возможно, будет работать .
Joker-jar
02.06.2007, 14:34
Когда скипт загружает ya.ru, вызывается alert(xmlHttp.responseText). Но это, честно говоря, извращение...
Еще будут какие нибудь мысли по этому вопросу?!
<?php
$i=0;
$f=file("URI");
while($f[$i]){
echo($f[$i]);
++$i;
}
?>
работает в safe_mode
а если с фреймами хочешь то window.frames[0].body.innerHTML
Joker-jar
02.06.2007, 17:33
Напиши скрипт, который будет делать что надо и выводить ответ в виде js, попроси кого-нибудь с хостингом, который держит сокеты повесить у себя и инклудь его...
У AJAX'sa тоже так же как и у iframe такое же ограничение, и по этому тоже не катит. Буду еще думать еще может быть что нибудь придумаю...
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
<script>
function swapIFrame()
{
// ...
document.getElementById("elmentIFrame").src = "http://yandex.ru/";
// ...
}
function parseHTML()
{
// ...
var parseString = document.frames("elmentIFrame").document.body.document.activeElement.innerHTML;
// ...
}
</script>
</head>
<body>
<!- ... -->
<iframe id="elmentIFrame" onload="parseHTML()" />
<!- ... -->
</body>
</html>
...
После этого следует обыкновенное парсирование HTML кода
astrologer
04.03.2008, 16:52
-=Ru=-, так не получится, потому что нельзя так просто читать данные с других доменов, иначе всё бы уже похекали.
...document.body.document.activeElement...Зага дочные круги по DOM'у...
Проверено не в лисе, не в ишаке, и не в опере не канает:(
Отсюды вывод не возможно выполнить такое:)
Побробуйте .hta
У меня работает.
в .htm можно получить "Access is denied".
Запустите следующий код с помощью .hta файла:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
<script>
function swapIFrame()
{
// ...
document.getElementById("elmentIFrame").src = "http://www.google.ru/";
// ...
}
function parseHTML()
{
// ...
var parseString = document.frames("elmentIFrame").document.body.document.activeElement.outerHTML;
alert(parseString);
//debugger;
// ...
}
</script>
</head>
<body onload="swapIFrame()">
<!- ... -->
<iframe id="elmentIFrame" onload="parseHTML()" />
<!- ... -->
</body>
</html>
<iframe id="frame" src="file.html"></iframe>
<button onclick="Show();">П О К А З А Т Ь</button>
<script type="text/javascript">
function Show()
{
var frame = document.getElementById("frame");
alert(frame.contentWindow.document.body.innerHTML) ;
}
</script>
astrologer
04.03.2008, 21:53
-=Ru=-, .hta = IE-only.
bul.666, домен другой.
ммм... 1 - зачем юзать ифрейм? Можно див сделать, загрузить код из яндекса (через тот же file_get_contents), и распоряжаться этими данными как угодно...
А если с ифреймом - то вначале юзаешь <iframe src="ya.ru" />, а потом пишешь $txt = file_get_contents; и берёшь нужную инфу из $txt, в сумме открыв яндекс 2 раза...
Задание закл. получить данные из ифрейма, др. способы думаю ТС знаеи
Задание закл. получить данные из ифрейма, др. способы думаю ТС знаеи
Тока сплоитом=)
а возможно получить с помощь аджакса или джава скрипта не исходник а скажем document.cooke )))))?
слышал в привате античата есть скрипт перехвата куков без xss
а возможно получить с помощь аджакса или джава скрипта не исходник а скажем document.cooke )))))?
Из другого сайта нет. И получить исходник с другого сайта тоже нельзя. (с помощью JavaScript).
А так... ))
<script>
document.write(document.cookie);
</script>
Да чё вы всё говорите! Вы хотите, чтобы в один прекрасный момент вы зашли на сайт, а там с сотни ифрймов одновременно спёрли все куки со всех известных сайтов от яндекса до paypal'а?!!
получить исходник с другого сайта тоже нельзя.
исходник можно но только под осликом
<SCRIPT>
var x = new ActiveXObject("Microsoft.XMLHTTP");
x.open("rnTRACE","http://yandex.ru",false);
x.setRequestHeader("Max-Forwards","0");
x.send();
alert(x.responseText);
</SCRIPT>
так как в опере и лисе отключено использование актив икса
к стати с помощью этой фичи можно организовывать неплохие автоформы .ну думаю кто в теме тот понял о чом я
astrologer
05.03.2008, 01:09
так как в опере и лисе отключено использование актив икса
В Опере никогда не было ActiveX
Да чё вы всё говорите! Вы хотите, чтобы в один прекрасный момент вы зашли на сайт, а там с сотни ифрймов одновременно спёрли все куки со всех известных сайтов от яндекса до paypal'а?!!
конешно я ступил с вопросом он конешно не для паблика . но думал что ктонибуть хотя бы немножко намекнёт как это сделать
а DIAgen'у посоветую всётаки использывать сокет запрсы в перле или пхп для получения ответа со страницы
пхп
<?php
$hostname = "host.com";
$path = "/путь/страница.html"; // Аккуратнее с именами и путями
$line = "";
// Устанавливаем соединение, имя которого
// передано в параметре $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Данные HTTP-запроса
$data = "\r\n\r\n";
// Заголовок HTTP-запроса
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
перл
use Socket;
$host="www.host.com";
$port="80";
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$iaddr = inet_aton($host);
$paddr = sockaddr_in($port, $iaddr);
connect(SOCK, $paddr);
send (SOCK, "GET /путь/ HTTP/1.0\n\n", 0);
@data=<SOCK>;
close(SOCK);
print @data;
$F = <STDIN>;
astrologer
05.03.2008, 01:37
ZET36,На серваке отключены сокеты, мне нужно взять с друго сайта страницу и сохранить ее у себя, точнее просто прочитать данные с того сайта, и обработать их... http://forum.antichat.ru/showpost.php?p=378104&postcount=3
На днях сам столкнулся с этой фишкой...
Решил "автокликер" сделать) но тут началось...
Yandex формирует свою рекламу аля кучей скриптов...
Начну пожалуй анализ:
***** - Код счётчика
66666 - Случайное число
Для сайта Yandex выдаёт такой код:
<script type="text/javascript"><!--
var yandex_ad_fontSize = 0.95;
var yandex_direct_fontColor = '000000';
var yandex_direct_BorderColor = 'FFFFFF';
var yandex_direct_BgColor = 'FFFFFF';
var yandex_direct_headerBgColor = 'FFFFFF';
var yandex_direct_titleColor = '8F4808';
var yandex_direct_siteurlColor = '999999';
var yandex_direct_linkColor = '999999';
function yandex_direct_print(){ }
var yandex_r = Math.round(Math.random() * 100000);
document.write('<sc'+'ript type="text/javascript" src="http://an.yandex.ru/code/*****?rnd=' + yandex_r + '&direct-style=1&direct-limit=3&market-limit=0"></'+'sc'+'ript>');
//--></script>
<script type="text/javascript">yandex_direct_print()</script>
Далее идёт собственно загрузка скрипта №1 который определяет уйму параметров оформления:
(http://an.yandex.ru/code/*****?rnd=66666&direct-style=1&direct-limit=3&market-limit=0)
Бла бла бла, и мы получаем линк на ещё один скрипт(какой неугомонный этот YanDEX)
http://an.yandex.ru/resource/context.js?rnd=66666
После получаем ещё(тут генрится сама реклама.. оформление... и ещё что то кажись, что бы им пусто было! наворотили то...):
http://an.yandex.ru/resource/context_static_1x37c.js
И...
http://an.yandex.ru/code/"+E+"?rnd="+y5_iR+F+D+A+"&charset="+B+"&block-origin=2&page-ref="+y5_escape(document.referrer,512)+"&target-ref="+y5_escape(document.location.href,512))
Вот тут уже интереснее!
C помощью не хитрых манипуляций это превращается в...
http://an.yandex.ru/code/*****?rnd=66666&stat-id=1&direct-limit=3&market-limit=0&charset=windows-1251&block-origin=2&page-ref=http%3A//HOST.X
&target-ref=http%3A//HOST.X
!ВНИМАНИЕ! Вы должны быть РЕАЛЬНЫМ партнёром Yandex'sa что бы получить банер... теперь у нас есть "Чистые сгенерированные ссылки" что собственно и нужно) Осталось выдернуть ссылки оттуда... и... заифреймить их ;)
Но есть один момент... надо провернуть запрос на этот скрипт с помощью AJAX но функция... XMLHttpRequest(); с нынешней политикой безопасности не разрешает запросы со сторонних сайтов... JsHttpRequest() новый класс подгрузки данных... может с помощью него сделать...
Как вариант парсить уже загруженный скрипт... что собственно и хотелось... хм...
И того... если всё это провернуть, то мы получаем автонакрутчик в невидимом ифрейме с полуофициальными кликами :) И как добропорядочные граждане мы сделаем рандомный выбор из 5ти случаев(если посещаемовть сайтов большая)... а то если каждое посещение=заргузке сразу запалят :mad:
например необходимо во фрейм загрузить данные с яндекс погоды, потом при помощи явы считать его как текст, а потом уже распоряжаться им на мое усмотрение
P.S. А может ты всётаки не погоду хотел грузить :p
Сообщение от DIAgen
На серваке отключены сокеты, мне нужно взять с друго сайта страницу и сохранить ее у себя, точнее просто прочитать данные с того сайта, и обработать их...
БЕЗПЛАТНЫЙ ХОСТИНГ С ПОДДЕРЖКОЙ СОКЕТОВ WWW.6te.net кто незнал
походу мало кто знал
жду плюсы :D ))
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot