2017-06-23 3 views
0

Ich versuche, den User-Agent-String außer Kraft zu setzen, konnte aber nicht die Lösung im Internet bisher finden ...Facebook WebDriver: Set User Agent (PHP)

Das ist mein Skript:

<?php 
namespace Facebook\WebDriver; 

use Facebook\WebDriver\Remote\DesiredCapabilities; 
use Facebook\WebDriver\Remote\RemoteWebDriver; 

require_once('vendor/autoload.php'); 

$host   = 'http://localhost:4444/wd/hub'; 
$capabilities = DesiredCapabilities::chrome(); 
$capabilities->setPlatform(WebDriverPlatform::WINDOWS); 
$capabilities->setCapability('userAgent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'); 
$capabilities->setCapability('user-agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'); 
$driver  = RemoteWebDriver::create($host, $capabilities, 5000); 

$driver->get('http://localhost/browser-emu/testpage.php?bot=1234'); 

// wait until the page is loaded 
$driver->wait()->until(
    WebDriverExpectedCondition::titleContains('register') 
); 

echo "User agent: " . $driver->findElement(WebDriverBy::cssSelector('#userAgent'))->getText(); 

$driver->quit(); 

die Seite selbst ist so einfach wie:

<html> 
<body> 
<h1>testpage...</h1> 

<?php 
printf("<div id='userAgent'>%s</div> \n", $_SERVER['HTTP_USER_AGENT']); 
?> 
</body> 
</html> 

es spielt keine Rolle, was ich bereits versucht haben, es immer sagt der User-Agent Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36 ist.

Weiß jemand, wie ich das übersteuern kann?

Ich verwende (auf Ubuntu):

  • facebook/WebDriver @ 1.4.1
  • chromedriver @ 2.30.477691
+0

Mögliche Duplikat [User-Agent ändern für Selen-Treiber] (https://stackoverflow.com/questions/29916054/change-user-agent-for-selenium-driver) –

+0

sah, aber das funktioniert nicht in PHP oder zumindest weiß ich nicht, welche Klassen instanziiert werden, bis der Treiber instanziiert wird. Wenn ich der Semantik, wie in Python gezeigt, folge, bekomme ich einen 'Aufruf an private FirefoxDriver :: __ construct() von ungültigem Kontext 'Fehler, wenn ich versuche, den Treiber mit dem Profil zu bekommen. – Dennis

+0

Wie vom anderen Post angewiesen, müssen Sie den Benutzer-Agent lediglich als Befehlszeilenargument angeben. Werfen Sie einen Blick auf die API für die Methode: https://facebook.github.io/php-webdriver/latest/Facebook/WebDriver/Chrome/ChromeOptions.html –

Antwort

2

ich die Lösung in der official wiki von gefunden habe facebook/web-Treiber (Firefox):

$host = 'http://localhost:4444/wd/hub'; 

$profile = new FirefoxProfile(); 
$profile->setPreference('general.useragent.override', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'); 

$caps = DesiredCapabilities::firefox(); 
$caps->setCapability(FirefoxDriver::PROFILE, $profile); 

$driver = RemoteWebDriver::create($host, $caps); 

Und für Chrome:

012.351.
$options = new ChromeOptions(); 
$options->addArguments(array(
    '--user-agent=' . $userAgent 
)); 

$caps = DesiredCapabilities::chrome(); 
$caps->setCapability(ChromeOptions::CAPABILITY, $options); 

$driver = RemoteWebDriver::create($host, $caps);