selenium-tor/example.php

61 lines
1.8 KiB
PHP

<?php
use Sikofitt\WebDriver\FirefoxBinary;
use Sikofitt\WebDriver\ImageDownloader;
use Sikofitt\WebDriver\Remote\DesiredCapabilities;
use Sikofitt\WebDriver\Tor\TorProfile;
use Sikofitt\WebDriver\TorLauncher;
require __DIR__ . '/vendor/autoload.php';
$firefoxBinary = new FirefoxBinary(__DIR__ . '/tor-browser_en-US/Browser/start-tor-browser');
$caps = DesiredCapabilities::tor($firefoxBinary);
$profile = new TorProfile();
$caps->setCapability('timeout', 3600);
$caps->setCapability(FirefoxDriver::PROFILE, $profile);
$torProcess = TorLauncher::launch($firefoxBinary);
// Wait for Tor to connect
$sleepTime = 5;
$torProcess->wait(function() use ($sleepTime) {
sleep($sleepTime);
});
$webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $caps);
$webDriver->manage()->timeouts()->implicitlyWait(5);
$webDriver->navigate()->to('http://32b5oz2bbtn6gqj3.onion');
// Or $this-webDriver->get('http://32b5oz2bbtn6gqj3.onion');
$pageImages = $webDriver->findElements(WebDriverBy::tagName('img'));
$images = [];
$downloader = new ImageDownloader();
foreach($pageImages as $image)
{
$downloader->open($image->getAttribute('src'));
print 'Saving image ' . $downloader->getFileName();
// write some data about the request
file_put_contents(
sys_get_temp_dir() . '/' . $downloader->getFileName() . '.meta.json',
json_encode([
'pathinfo' => $downloader->getPathInfo(),
'curlinfo' => $downloader->getCurlInfo(),
'webdriver' => [
'title' => $webDriver->getTitle(),
'source' => base64_encode($webDriver->getPageSource())
]
], JSON_PRETTY_PRINT)
);
// save the image
$downloader->save(__DIR__ . '/images/');
// save the image in base64 format.
// base64_decode to view the raw image data.
$downloader->save(__DIR__ . '/images/', true);
}
TorLauncher::stop($torProcess);