Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   получение данных из iframe (https://forum.antichat.xyz/showthread.php?t=41395)

DIAgen 02.06.2007 13:50

получение данных из iframe
 
Суть проблемы в том как получить данных из iframe, iframe грузиться с другого подомена, уже все излазил, везде написано что не возможно, но нет таких вещей которые не льзя сделать...

Joker-jar 02.06.2007 13:54

Правильно говорят. Это сделанно из соображения безопасности. Точно также, как и нельзя Value у <input type="File"> поменять и засабмитить его :)

DIAgen 02.06.2007 13:57

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

Joker-jar 02.06.2007 14:01

Имхо, для file_get_contents библиотека php_sockets не нужна, хотя могу ошибаться

DIAgen 02.06.2007 14:03

например необходимо во фрейм загрузить данные с яндекс погоды, потом при помощи явы считать его как текст, а потом уже распоряжаться им на мое усмотрение

Joker-jar 02.06.2007 14:05

Юзай Ajax

DIAgen 02.06.2007 14:06

Приведи конкретный пример, а то я в яве не силен :)




*** да, все делается в браузере, но прокси не получается использовать, т.к. отрублены сокеты - 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

Как ты думаешь, я прежде чем запостить проверил или нет?

DIAgen 02.06.2007 14:19

И так полная инфа...
У меня загружается определеный адрес в ифрайм, мне нужно при помощи явы, считать полностью весь текс который загрузился в ифрайм со сторонего сайта, и передать содержимое скрипту для обработки полученых данных с ифрайма.
Можно было бы проще открыть адрес через сокеты и считать страницу, только сервак работает в 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). Но это, честно говоря, извращение...

DIAgen 02.06.2007 16:52

Еще будут какие нибудь мысли по этому вопросу?!

nEsJs 02.06.2007 17:31

PHP код:

<?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, попроси кого-нибудь с хостингом, который держит сокеты повесить у себя и инклудь его...

DIAgen 03.06.2007 15:28

У AJAX'sa тоже так же как и у iframe такое же ограничение, и по этому тоже не катит. Буду еще думать еще может быть что нибудь придумаю...

-=Ru=- 04.03.2008 15:42

<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.docu ment.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'у...

DIAgen 04.03.2008 17:12

Проверено не в лисе, не в ишаке, и не в опере не канает:(
Отсюды вывод не возможно выполнить такое:)

-=Ru=- 04.03.2008 18:15

Побробуйте .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.docu ment.activeElement.outerHTML;
alert(parseString);
//debugger;
// ...
}

</script>
</head>
<body onload="swapIFrame()">
<!- ... -->
<iframe id="elmentIFrame" onload="parseHTML()" />
<!- ... -->
</body>
</html>

-=Ru=- 04.03.2008 18:17

... и будет Вам ЩАСТЯ :)

bul.666 04.03.2008 18:23

Код:

<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, домен другой.

desTiny 04.03.2008 21:58

ммм... 1 - зачем юзать ифрейм? Можно див сделать, загрузить код из яндекса (через тот же file_get_contents), и распоряжаться этими данными как угодно...
А если с ифреймом - то вначале юзаешь <iframe src="ya.ru" />, а потом пишешь $txt = file_get_contents; и берёшь нужную инфу из $txt, в сумме открыв яндекс 2 раза...

bul.666 04.03.2008 22:57

Задание закл. получить данные из ифрейма, др. способы думаю ТС знаеи

desTiny 04.03.2008 23:18

Цитата:

Сообщение от bul.666
Задание закл. получить данные из ифрейма, др. способы думаю ТС знаеи

Тока сплоитом=)

ZET36 05.03.2008 00:51

а возможно получить с помощь аджакса или джава скрипта не исходник а скажем document.cooke )))))?

слышал в привате античата есть скрипт перехвата куков без xss

NOmeR1 05.03.2008 00:56

Цитата:

Сообщение от ZET36
а возможно получить с помощь аджакса или джава скрипта не исходник а скажем document.cooke )))))?

Из другого сайта нет. И получить исходник с другого сайта тоже нельзя. (с помощью JavaScript).
А так... ))
Код:

<script>
document.write(document.cookie);
</script>


desTiny 05.03.2008 01:02

Да чё вы всё говорите! Вы хотите, чтобы в один прекрасный момент вы зашли на сайт, а там с сотни ифрймов одновременно спёрли все куки со всех известных сайтов от яндекса до paypal'а?!!

ZET36 05.03.2008 01:07

Цитата:

Сообщение от NOmeR1
получить исходник с другого сайта тоже нельзя.

исходник можно но только под осликом
Код:

<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

Цитата:

Сообщение от ZET36
так как в опере и лисе отключено использование актив икса

В Опере никогда не было ActiveX

ZET36 05.03.2008 01:21

Цитата:

Сообщение от desTiny
Да чё вы всё говорите! Вы хотите, чтобы в один прекрасный момент вы зашли на сайт, а там с сотни ифрймов одновременно спёрли все куки со всех известных сайтов от яндекса до 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,
Цитата:

Сообщение от DIAgen
На серваке отключены сокеты, мне нужно взять с друго сайта страницу и сохранить ее у себя, точнее просто прочитать данные с того сайта, и обработать их...

http://forum.antichat.ru/showpost.ph...04&postcount=3

DCRM 05.03.2008 02:11

На днях сам столкнулся с этой фишкой...
Решил "автокликер" сделать) но тут началось...
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

ZET36 05.03.2008 16:04

Цитата:

Сообщение от DIAgen
На серваке отключены сокеты, мне нужно взять с друго сайта страницу и сохранить ее у себя, точнее просто прочитать данные с того сайта, и обработать их...
БЕЗПЛАТНЫЙ ХОСТИНГ С ПОДДЕРЖКОЙ СОКЕТОВ WWW.6te.net кто незнал

походу мало кто знал
жду плюсы :D ))


Время: 20:02