Получить HTML-кросс-сайт, отобразить его и получить значение элемента - PullRequest
0 голосов
/ 09 декабря 2010

Мне нужно получить полный вывод с сайта aspx. Когда пользователь уйдет, я сохраню то, что в некоторых конкретных элементах, в куки. Проблема в том, что aspx находится в домене, к которому у меня нет доступа. Я хочу, чтобы вывод работал как в iframe, поэтому ссылки должны быть активными, но они не покинут мою страницу.

Я думаю о AJAX с PHP-прокси или о iframe, в котором я могу изменять контент. Это возможно? Если это возможно и связано с кодом на стороне сервера, я хотел бы знать, есть ли какие-нибудь бесплатные веб-хосты, которые поддерживают полный код (например, почти на каждом бесплатном веб-хосте есть safe_mode для PHP).

РЕДАКТИРОВАТЬ: Я хочу отобразить эту страницу: Схема школы . URL не меняется, он просто отправляет запросы на сервер (подумайте через JavaScript). Когда пользователь уйдет, я увижу, что находится в поле выбора id = "TypeDropDownList", а что находится в поле выбора id = "ScheduleIDDropDownList".

Когда пользователь вернется на мою страницу, я распечатаю эти значения на странице через URL-адрес, подобный этому "http://www.novasoftware.se/webviewer/(S(lv1isca2txx1bu45c3kvic45))/design1.aspx?schoolid=27500&code=82820&type=" + type + "&id=" + id + "

Я попробовал несколько скриптов php proxy на 000webhost, прежде чем отправлять сюда. например это:

<?php
ob_start();

function logf($message) {
  $fd = fopen('proxy.log', "a");
  fwrite($fd, $message . "\n");
  fclose($fd);
}

?>
<?
$url = $_REQUEST['url'];
logf($url);
$curl_handle = curl_init($url);
curl_setopt($curl_handle, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, "Owen's AJAX Proxy");

$content = curl_exec($curl_handle);
$content_type = curl_getinfo($curl_handle, CURLINFO_CONTENT_TYPE);
curl_close($curl_handle);
header("Content-Type: $content_type");
echo $content;
ob_flush();
?>

Но он возвращает предупреждение: curl_setopt (): предоставленный аргумент не является допустимым ресурсом дескриптора cURL в /home/a5379897/public_html/ajax-proxy.php в строке 16

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

Я думаю, что было бы возможно просто отобразить два поля выбора, когда пользователь впервые заходит на страницу. Когда выбраны опции, он заставит iframe показывать правильную страницу, передав "http://www.novasoftware.se/webviewer/(S(lv1isca2txx1bu45c3kvic45))/design1.aspx?schoolid=27500&code=82820&type=" + type +" & id = "+ id +" в атрибут src. Проблема в том, что мне нужно будет как-то получить поля выбора, и у меня будет та же проблема.

Ответы [ 3 ]

2 голосов
/ 09 декабря 2010

Вам нужно будет использовать PHP, так как Javascript не разрешает междоменные запросы.Ваш PHP-код буквально захватывает страницу, которую хочет клиент, обрабатывает ее (изменяя ссылку href на вашу страницу с помощью переменной get той страницы, на которую ссылается исходная ссылка href).Когда они нажимают на ссылку, они отправляются на ту же страницу, на которой они находятся, но страница захватывает новую страницу и возвращает ее (обрабатывает и эту страницу) и т. Д.

000webhost - хороший бесплатный веб-хостингкоторые позволяют вам выполнять большинство функций PHP и не размещать рекламу на вашем сайте.

1 голос
/ 10 декабря 2010

Чтобы получить весь вывод aspx в виде строки для манипуляции, вы можете использовать file_get_contents(http://yoursite.com/yourpage.aspx);

Для достижения наилучших результатов откройте поток как контекст через http.

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>
0 голосов
/ 10 декабря 2010

Благодаря Грегу я смог создать этот скрипт, который получает страницу.

<html>
<head>
</head>
<body>
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);
$host = 'http://www.novasoftware.se/webviewer/(S(bkjwdqntqzife4251x4sdx45))/';
$url = '/design1.aspx?schoolid=27500&code=82820&type=3&id={7294F285-A5CB-47D6-B268-E950CA205560}';
$changetothis='src="'.$host;
// Open the file using the HTTP headers set above
$file = file_get_contents($host.$url, false, $context);
$changed = str_replace('src="', $changetothis,$file);
echo $changed;

?>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...