Как я могу отобразить домашнюю страницу сайта на своем собственном сайте? - PullRequest
0 голосов
/ 30 сентября 2018

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

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

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

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

1 Ответ

0 голосов
/ 01 октября 2018

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

  1. Загрузите последнюю версию Selenium Standalone Server (требуется 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;
    }
    

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

...