I\'ve been testing out Selenium with Chromedriver and I noticed that some pages can detect that you\'re using Selenium even though there\'s no automation at all. Even when I
Replacing cdc_
variable using Vim or Perl
You can use vim
, or as @Vic Seedoubleyew has pointed out in the answer by @Erti-Chris Eelmaa, perl
, to replace the cdc_
variable in chromedriver
(See post by @Erti-Chris Eelmaa to learn more about that variable). Using vim
or perl
prevents you from having to recompile source code or use a hex-editor. Make sure to make a copy of the original chromedriver
before attempting to edit it. Also, the methods below were tested on chromedriver version 2.41.578706
.
vim /path/to/chromedriver
After running the line above, you'll probably see a bunch of gibberish. Do the following:
cdc_
by typing /cdc_
and pressing return
.a
.$cdc_lasutopfhvcZLmcfl
and replace what was deleted with an equal amount characters. If you don't, chromedriver
will fail.esc
.:wq!
and press return
.:q!
and press return
.Go to the altered chromedriver
and double click on it. A terminal
window should open up. If you don't see killed
in the output, you successfully altered the driver.
The line below replaces cdc_
with dog_
:
perl -pi -e 's/cdc_/dog_/g' /path/to/chromedriver
Make sure that the replacement string has the same number of characters as the search string, otherwise the chromedriver
will fail.
Perl Explanation
s///g
denotes that you want to search for a string and replace it globally with another string (replaces all occurrences).
e.g.,
s/string/replacment/g
So,
s///
denotes searching for and replacing a string.
cdc_
is the search string.
dog_
is the replacement string.
g
is the global key, which replaces every occurrence of the string.
How to check if the Perl replacement worked
The following line will print every occurrence of the search string cdc_
:
perl -ne 'while(/cdc_/g){print "$&\n";}' /path/to/chromedriver
If this returns nothing, then cdc_
has been replaced.
Conversely, you can use the this:
perl -ne 'while(/dog_/g){print "$&\n";}' /path/to/chromedriver
to see if your replacement string, dog_
, is now in the chromedriver
binary. If it is, the replacement string will be printed to the console.
Go to the altered chromedriver
and double click on it. A terminal
window should open up. If you don't see killed
in the output, you successfully altered the driver.
After altering the chromedriver
binary, make sure that the name of the altered chromedriver
binary is chromedriver
, and that the original binary is either moved from its original location or renamed.
I was previously being detected on a website while trying to log in, but after replacing cdc_
with an equal sized string, I was able to log in. Like others have said though, if you've already been detected, you might get blocked for a plethora of other reasons even after using this method. So you may have to try accessing the site that was detecting you using a VPN, different network, or what have you.