Selenium chromedriver - убрать webrtc - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB73.1904
BTC/USD41797.4867
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 17.06.2017, 06:16   #1
missx
Member
 
Регистрация: 22.09.2015
Сообщений: 37
Бабло: $7280
По умолчанию Selenium chromedriver - убрать webrtc

Привет, я не могу догнать, как выключить webrtc в селениуме (хромдрайвер. в смысле, я его юзаю как либу, не как плагин в браузере). Может кто-нибудь знает?

Пробовала так (java):

Код:
capabilities.setCapability("chrome.switches", Arrays.asList(
   "--disable-webrtc-multiple-routes", "--disable-webrtc-hw-encoding",
   "--disable-webrtc-hw-decoding", "--disable-webrtc-encryption"));
Не работает. Т.е. да, там и нет аргумента типа "--выключить-вебртц", но дело в том, что я вообще больше ничего, связанного с вебртц, не нашла.

Вот, посмотрела код со всеми switches: https://src.chromium.org/viewvc/chro...me_switches.cc

Там этого нет.

Посмотрела код со всеми prefs: https://src.chromium.org/viewvc/chro.../pref_names.cc

Там тоже ничего про вебртц нет. Как его вырубить? Мне не обязательно на джаве, скажите, на чём умеете, я на джаву переведу потом.
missx вне форума  
Старый 17.06.2017, 10:05   #2
missx
Member
 
Регистрация: 22.09.2015
Сообщений: 37
Бабло: $7280
ТС -->
автор темы ТС По умолчанию

Поняла, как сделать. Может кому пригодится.

1. Сначала надо установить в Хроме (в браузере) расширение Get CRX.
2. Надо найти любое расширение, блокирующее webrtc.
3. Теперь если на странице расширения нажать в любом месте правой кнопкой, в контекстном меню будет "Get CRX". Надо нажать на это и сохранить файл .crx (это получится файл расширения, блокирующего webrtc, который потом можно будет использовать в хром драйвере)
4. Теперь надо сказать хром драйверу, чтоб он использовал сохранённый файл (подключил это расширение). Для этого надо из сохранённого .crx файла прочитать байты, закодировать в base64 и отдать хром драйверу:

Код:
        Map<String, Object> chromeOptions = new HashMap<String, Object>();

        ArrayList<String> ext = new ArrayList<>();
        byte[] byteExt = Files.readAllBytes(new File("путь к .crx файлу").toPath());
        ext.add(Base64.encode(byteExt));
        chromeOptions.put("extensions", ext);
       
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();

        capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);

        WebDriver driver = new ChromeDriver(capabilities);
Для того, чобы закодить в base64, использовалась либа апача (import org.apache.xerces.impl.dv.util.Base64, это в apache commons).

В общем, я не знаю, надо это тут кому-то или нет Но просмотры вроде есть у темы, оставлю это здесь. Вообще, хотелось бы как-то по-другому вырубить webrtc, потому что таким способом получается, что в плагинах будет какой-нибудь "Webrtcblock", т.е. как бы это уже плохо. Если кто знает, как вырубить его без использования плагинов, это было бы намного лучше.
missx вне форума  
Старый 18.06.2017, 01:27   #3
somtam
Senior Member
 
Регистрация: 27.05.2015
Сообщений: 180
Бабло: $26105
По умолчанию

у меня впечатление сложилось что с файрфоксовскими апи проще работать, они не так давно поменяли драйвер еще на https://developer.mozilla.org/en-US/.../QA/Marionette
somtam вне форума  
Старый 18.06.2017, 01:39   #4
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 18.06.2007
Сообщений: 5,676
Бабло: $940873
По умолчанию

Цитата:
Сообщение от missx
расширение Get CRX.
можно без crx, просто распакованное расширение и опцию к запуску --load-extension=путь
sspy вне форума  
Старый 22.06.2017, 05:34   #5
missx
Member
 
Регистрация: 22.09.2015
Сообщений: 37
Бабло: $7280
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от sspy Посмотреть сообщение
Цитата:
Сообщение от missx
расширение Get CRX.
можно без crx, просто распакованное расширение и опцию к запуску --load-extension=путь
Можно так. Тогда во так будет в коде:

Код:
ChromeOptions options = new ChromeOptions();
options.addArguments("load-extension=/path/to/extension");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
А у вас получилось выставить таймзону? Ну это ж пиздец какой-то. Я уже везде поискала. Вот, что я нашла:

Код:
chromeOptions.put("args", Arrays.asList("--disable-system-timezone-automatic-detection", "--local-timezone"));
Хуер в систем тайм всё равно показывает время винды.

Где-то откопала странное решение:

Код:
((JavascriptExecutor) driver).executeScript("Date.prototype.getTime = function() { return 1 };");
Тоже нифига не работает. Сработало вот это:

Код:
Runtime.getRuntime().exec("cmd /C time " + "16:56:10");
Это типа всё равно что в командной строке винды выставить время, но конечно для многопоточного проекта это вообще не вариант.

У кого-то получилось таймзону подменить?

Искала расширение, которое как то блокировало бы получение системного времени, не нашла.

Последний раз редактировалось missx; 22.06.2017 в 05:39.
missx вне форума  
Старый 22.06.2017, 12:29   #6
sergeospb
коплю на феррари
 
Регистрация: 03.07.2008
Сообщений: 1,253
Бабло: $148195
По умолчанию

1) качаем https://multiloginapp.com/, ставим, настраиваем Хром, смотрим его плагин, делаем также. Он спуфит нужные данные.
2) идем https://chromium.googlesource.com/ch...nstructions.md , все настраиваем, собираем chromedriver сами
3) серчим гугл по киворду "chrome detect selenium", меняем исходники chromedriver, опять собираем
Профит!
P.S.
против сервисов Гугла не поможет, там еще дальше "наворачивать" надо
sergeospb вне форума  
Старый 22.06.2017, 12:44   #7
missx
Member
 
Регистрация: 22.09.2015
Сообщений: 37
Бабло: $7280
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от sergeospb Посмотреть сообщение
1) качаем https://multiloginapp.com/, ставим, настраиваем Хром, смотрим его плагин, делаем также. Он спуфит нужные данные.
2) идем https://chromium.googlesource.com/ch...nstructions.md , все настраиваем, собираем chromedriver сами
3) серчим гугл по киворду "chrome detect selenium", меняем исходники chromedriver, опять собираем
Профит!
P.S.
против сервисов Гугла не поможет, там еще дальше "наворачивать" надо
Спасибо, круто. Пока что сложновато для меня, но тоже думала о том, что походу придётся самой собирать хромдрайвер. Даже нашла где-то кусок кода из него, где было вырезано получение таймзоны из винды.

Просто в чём фигня. Всё остальное, кроме таймзоны, пока что (временно, я думаю), меня устраивает. Я нашла расширения, которые блокируют всё, что мне надо, и при этом не определяются как расширения, binary взяла не обычный хром, а браузер на его основе с продвинутой анонимностью, там нет webgl, нет канвас фингерпринта и нет геолокации. При этом джаваскрипт включен. Флэш куки вырубила на компе вообще. Ну и вот, получается, что осталась только одна проблема - таймзона. Ради неё ну не очень хочется собирать хромдрайвер. Т.е. было бы это элементарно для меня - да, конечно. Или было бы у меня много времени - тоже. А так, на изучение много времени уйдёт просто.

Я пока что больше смотрю в сторону инжекта javascript чтоб время подменить, только не работает он что-то, хотя вроде должен. Не понимаю, почему.

Пробовала такой

Код:
var dateYouWant = 1363798981693; Date.prototype.getTime = function() { return dateYouWant; }; console.log( (new Date).getTime() );
И такой

Код:
 var d = new Date(2012, 0, 20); Date = undefined; Date = function(){return d;}
Что с ними не так?

Последний раз редактировалось missx; 22.06.2017 в 12:49.
missx вне форума  
Старый 22.06.2017, 22:22   #8
sergeospb
коплю на феррари
 
Регистрация: 03.07.2008
Сообщений: 1,253
Бабло: $148195
По умолчанию

Цитата:
Сообщение от sergeospb Посмотреть сообщение
1) качаем https://multiloginapp.com/, ставим, настраиваем Хром, смотрим его плагин, делаем также. Он спуфит нужные данные.

Все таки попробуй, что я описал в предыдущем посте. Все, что ты хочешь сделать - пройденный этап для многих. Все уже выдумано и решено (ну или почти все).
sergeospb вне форума  
Старый 22.06.2017, 23:04   #9
missx
Member
 
Регистрация: 22.09.2015
Сообщений: 37
Бабло: $7280
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от sergeospb Посмотреть сообщение
Цитата:
Сообщение от sergeospb Посмотреть сообщение
1) качаем https://multiloginapp.com/, ставим, настраиваем Хром, смотрим его плагин, делаем также. Он спуфит нужные данные.

Все таки попробуй, что я описал в предыдущем посте. Все, что ты хочешь сделать - пройденный этап для многих. Все уже выдумано и решено (ну или почти все).
Ок, я что-то после твоего поста задумалась, что мне это только кажется сложным Надо попробовать.
missx вне форума  
Старый 24.06.2017, 13:25   #10
gectp
Юниор
 
Регистрация: 16.09.2011
Сообщений: 2
Бабло: $1360
По умолчанию

А как тоже самое сделать для фаерфокса?
Я имею ввиду подменить системное время
gectp вне форума