Как я могу отобразить домашнюю страницу сайта на своем собственном сайте?

Я пытаюсь создать веб-сайт для портфолио, чтобы продемонстрировать свои таланты в качестве веб-разработчика и привлечь дополнительных внештатных клиентов. Для этого мне бы хотелось иметь карусель Bootstrap с фреймами, отображающими домашние страницы предыдущих сайтов, над которыми я работал.

Проблема в том, что внешние сайты строго придерживаются политики одного и того же происхождения, а также не имеют какой-либо поддержки CORS. У меня больше нет возможности изменить это, так как я больше не работаю в компании, занимающейся веб-разработкой, которая поддерживает эти сайты, так что, как лучше всего выполнить эту задачу (желательно на PHP или AJAX, но я готов рассмотреть любые как это работает)?

Я пытался использовать wget / cURL для загрузки локальных копий сайтов, но беспорядок связанных изображений, CSS-файлов и т. Д., Которые необходимо загрузить, не только требует головной боли, но также занимает ~ 2 минуты для загрузки.

Внешние страницы также содержат множество относительных путей к этим ресурсам, которые необходимо сделать абсолютными или указывать на мои локальные копии ресурсов, чтобы работать должным образом. Это стало намного более сложной задачей, чем первоначально предполагалось, и я почти готов просто забыть обо всей концепции в целом. Поэтому я также открыт для любых предложений о том, как еще я мог бы рекламировать свою предыдущую работу и показать свои навыки потенциальным новым клиентам. MTIA 🙂

-1

Решение

Решением оказалось Selenium WebDriver, как предложено @thebjorn в комментариях выше. Хотя было довольно сложно заставить его работать в полном объеме, поэтому для любого, кто столкнется с этим в будущем, вот как я в конце концов это сделал:

  1. Загрузите последнюю версию Selenium Автономный Сервер (требуется Java 8+) и запустите его в окне shell / cmd с помощью java -jar <path to downloaded jar file>selenium-server-standalone-<version number>.jar,
  2. Пока вы находитесь на вышеуказанном сайте, также получите последние привязки языка WebDriver для выбранного вами языка программирования. Selenium предоставляет привязки для Java, C #, Ruby, Python и Javascript (через Node.js). Для сторонних привязок для других языков, проверьте эта страница.
  3. Распакуйте файлы привязки в любое место; Я не думаю, что действительно важно, куда вы их помещаете, если это имеет смысл для вас, и этот каталог легко доступен вашей программе.
  4. Возьмите копию с последней ChromeDriver исполняемый файл для вашей системы (или соответствующий драйвер другого браузера из указанной выше страницы) и добавьте его местоположение в системный PATH.

  5. Это самая сложная часть, так как она отличается для каждого языка и, возможно, даже для каждого набора привязок в каждом языке (если вы выбрали сторонний вариант). Но код, который работал для меня в PHP, используя Facebook WebDriver привязки, это:

    use Facebook\WebDriver\Remote\DesiredCapabilities;
    use Facebook\WebDriver\Remote\RemoteWebDriver;
    
    // Ignore this line if you aren't using composer
    require_once('../vendor/autoload.php');
    
    function getSiteSnapshot($siteUrl, $siteName) {
    $snapshot = __DIR__ . "/images/$siteName.png";
    
    $oneWeek = 604800;
    $lastModTime = !file_exists($snapshot) ? null : filemtime($snapshot);
    
    if ($lastModTime === null || $lastModTime < time() - $oneWeek) {
    $host = 'http://localhost:4444/wd/hub';
    $capabilities = DesiredCapabilities::chrome();
    $driver = RemoteWebDriver::create($host, $capabilities, 5000);
    
    $driver->get($siteUrl);
    $driver->takeScreenshot($snapshot);
    }
    
    return $snapshot;
    }
    

Надеюсь, что это поможет другому нубу, как я, привыкнуть к использованию этого очень мощного механизма веб-тестирования! Ура! 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]