Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   трансляция чужих данных у себя на сайте (https://javascript.ru/forum/misc/45079-translyaciya-chuzhikh-dannykh-u-sebya-na-sajjte.html)

skrudjmakdak 13.02.2014 20:43

открываешь фаербаг (f12), вкладка network там и смотришь json'ы

в хроме даже фильтр есть, нажимаешь XHR.

OleG54extra 13.02.2014 21:07

в общем пожалуйста помогите получать эти данные себе на определенную страницу.

OleG54extra 13.02.2014 21:13

Вложений: 1
вот что получилось ошибка 404

skrudjmakdak 13.02.2014 22:09

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

поэтому я дергал через свою серверную часть, вот пхп (имя пхп файла site.php):
<?php
$url = $_GET['url'];
echo file_get_contents($url);
?>


а вот реализация на js:
<html>
	<head>
		<title>example</title>
	</head>
	<body>
	<div>
		
	</div>
		<script>
function ajax(url)
	{
	var request = undefined;
	try
		{
		request = new ActiveXObject("Msxml2.XMLHTTP");
		}
	catch (e)
		{
		try
			{
			request = new ActiveXObject("Microsoft.XMLHTTP");
			}
		catch (e)
			{
			try
				{
				request = new XMLHttpRequest();
				}
			catch (e)
				{
				return false;
				}
			}
		}
	request.open('get', 'site.php?url=' + url, true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	request.onreadystatechange = function()
		{
		if (request.readyState == 4)
			{
			if (request.status == 200)
				{
				var data = eval(request.responseText);
				var div = document.querySelector('div');
				
				var records = data.records,
					len = records.length,
					i, k = [], m, r;
				
				for (i = 0; i < len; ++i)
					{
					r = records[i];
					m = new Array();
					m[0] = r.numOfQuotes;
					m[1] = r.numOfTrades;
					m[2] = r.price;
					k.push('<td>' + m.join('</td><td>') + '</td>');
					}
				
				div.innerHTML = '<table><tr>' + k.join('</tr><tr>') + '</tr></table>';
				}
			else
				console.log(request.status);
			}
		};
	request.send();
	}
ajax('http://www.otcmarkets.com/otciq/ajax/getTopWombatTrades.json');
		</script>
	</body>
</html>

OleG54extra 13.02.2014 22:24

хорошо, завтра разберусь.

Deff 13.02.2014 23:38

Цитата:

Сообщение от skrudjmakdak
поэтому я дергал через свою серверную часть, вот пхп (имя пхп файла site.php):

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

Более быстрый вариант реализации(для меня, к примеру) в связке С++ эмулятор браузера + PHP , который забирает из эмулятора сгенеренный контент с того сайта в итоговом виде и отдаёт клиенту (но не факт что они лучше полного проксирования, да и то существуют защиты от второго варианта(например простое кодирование ссылки в скриптах Аякс запросов), а в первом - отсутствие на клиенте реакции на на некоторые события, если скрипты динамически- изменяемые

skrudjmakdak 14.02.2014 09:30

Deff, а я чет не понял почему не получится? у меня все шло, правда долговато ждал ответа. или пхп кэширует данные?

Deff 14.02.2014 15:33

skrudjmakdak,
к примеру на странице скрипт
$.get("test.php"); который и заполняет таблицы (обычно типичный вариант для запрошенного ТС, посколь базы таблиц часто меняются)
test.php - обращения к странице с офсайта, во первых его нун перепарсить в полную ссылку, во вторых даже перепарсенное не пройдет ибо требует cors или играй ток с запросами со своего домена

skrudjmakdak 14.02.2014 15:47

Цитата:

Сообщение от Deff (Сообщение 297695)
test.php - обращения к странице с офсайта

не к странице, а к json строке, которая итак готова. зачем ее перепарсивать?

рони 14.02.2014 16:47

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


Часовой пояс GMT +3, время: 16:16.