2017-06-16 7 views
1

Ich möchte WebRTC in Chrome-Treiber deaktivieren, kann aber nicht herausfinden, wie es geht.Wie deaktiviere ich WebRTC in Chrome Driver?

ich so versucht (fanden diese Lösung in irgendeinem Blog):

capabilities.setCapability("chrome.switches", Arrays.asList(
    "--disable-webrtc-multiple-routes", "--disable-webrtc-hw-encoding", 
    "--disable-webrtc-hw-decoding", "--disable-webrtc-encryption")); 

Es funktioniert nicht. Ja, ich weiß, dass es dort nicht so etwas wie "--disable-webrtc" gibt, aber es ist alles, was ich über WebRTC gefunden habe, ich meine, ich habe einige andere WebRTC-Parameter nicht gefunden.

Ich suchte hier: https://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/chrome_switches.cc

Und: https://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/pref_names.cc

nichts über WebRTC gefunden werden.

+0

Können Sie uns helfen, zu aktualisieren, worum es bei WebRTC geht? – DebanjanB

+0

@Debanjan Wollen Sie erklären, was WebRTC ist? https://en.wikipedia.org/wiki/WebRTC. Und ich möchte es deaktivieren, denn wenn ich Proxy verwende und WebRTC aktiviert habe, geht ein Teil des Datenverkehrs direkt (ohne Proxy). Also, wenn WebRTC aktiviert ist, gibt es ein Leck, einige Websites können meine echte IP kennen. – Helen

+0

Also das Problem von WebRTC entsteht, wenn Proxy verwenden und WebRTC aktiviert haben. Sind Sie sicher, ob die Deaktivierung von WebRTC über Funktionen und einschließlich Proxy Ihren Bedürfnissen entspricht? Da ich keinen Proxy verwende, kann ich die Lösung, die ich Ihnen anbieten möchte, nicht testen. Danke – DebanjanB

Antwort

1

Ich fand eine Lösung.

Ich weiß nicht, wie Sie WebRTC direkt in den Einstellungen des Chrome-Treibers deaktivieren, aber es gibt auch einen anderen Weg: Fügen Sie eine WebRTC-Blockierungserweiterung hinzu. Und so habe ich es gemacht:

  1. Starten Sie Ihren Chrome-Browser und suchen Sie im Chrome Webstore nach CRX-Erweiterung. Installieren Sie Get CRX.
  2. Wenn Sie jetzt im Chrome Webstore nach einer anderen Erweiterung suchen, öffnen Sie die Seite und klicken Sie mit der rechten Maustaste auf eine beliebige Stelle auf der Seite. Im Kontextmenü wird "CRX abrufen" angezeigt. Finden Sie Ihre bevorzugte WebRTC-Blockerweiterung, öffnen Sie die Seite und klicken Sie auf "Get CRX". Laden Sie die .crx Datei herunter. Jetzt haben Sie eine WebRTC-Blockerweiterung in dieser .crx-Datei und können sie in Chrome Driver verwenden.
  3. Mit diesem Code starten Chrome-Treiber mit der Endung:

    Map<String, Object> chromeOptions = new HashMap<String, Object>(); 
    
    ArrayList<String> ext = new ArrayList<String>(); 
    byte[] byteExt = Files.readAllBytes(new File("path to .crx file").toPath()); 
    ext.add(Base64.encode(byteExt)); 
    chromeOptions.put("extensions", ext); 
    
    DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
    
    capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions); 
    
    WebDriver driver = new ChromeDriver(capabilities); 
    

Dieser Code fügt CRX-Erweiterung Chrome-Optionen. Die Erweiterung muss Base64-codiert sein. Ich verwende Apache Commons lib, um es zu verschlüsseln (import org.apache.xerces.impl.dv.util.Base64).

Jetzt wird Ihr Chrome-Treiber mit der WebRTC-Blockierungserweiterung gestartet, so dass WebRTC deaktiviert wird.

Aber diese Methode ist nicht ideal, weil Sie in diesem Fall eine WebRTC-Blockierungserweiterung in Browser-Plugins haben. Also, wenn Sie beim Testen einer Site völlig zufällig sein wollen (d. H. Unterschiedliche IP-Adresse, andere Fenstergröße, verschiedene User-Agenten, verschiedene Plugins), wird es nicht so sein, denn Sie werden immer dasselbe Plugin haben.

Also, wenn jemand weiß, wie WebRTC ohne Erweiterungen zu deaktivieren, wird es sehr geschätzt.

Verwandte Themen