bigot
Registered Member
- May 9, 2017
- 76
- 39
This post is just what I would do. I haven't tried creating Google accounts, so it's just speculation. Take it with a grain of salt.
https://www.behindthename.com/random/
The easiest way to solve this problem is to figure out which browser is easiest to automate. Then when narrow down your list of random user agents to only include that browser (but different versions of it). Try to test the entire list if possible.
Edit; clarification
I think common names would be more likely to pass. If you have Scrapebox, use the name generator to get a list, and randomly select from it. If not, scrape a few from here:1) The first and last name were randomly generated in a pattern of XXXWWXXX where X resembles 1-3 random characters and W resembles 1-2 real words from a dictionary. Google may detect the pattern
https://www.behindthename.com/random/
If you're concerned about this, make the password a concatenation of 2-4 dictionary words. If they require a number, throw in random 1-2 digits at the end.2) The password was between 32 and 64 characters and was completely random using all a-zA-Z0-9 and all of the symbols on my keyboard. Google may believe this is too difficult for a human to realistically use.
This is probably related to JS. Most devs are lazy fucks (myself included) who use jQuery or some other library to make JS easy to work with across browsers. Google builds all their own shit.3) Some strange inconsistencies between web browsers meant the page code was slightly different and sometimes I was not able to inject a gender or birth day. Sometimes a terms and conditions checkbox appeared, and sometimes there was an issue with the page where it complained the phone prefix (put there by the page, I hadn't changed it) did not match the country (again, placed there by the page). My bot's fallback made it refresh the page and try again, but it's inefficient as it happens unfortunately often.
The easiest way to solve this problem is to figure out which browser is easiest to automate. Then when narrow down your list of random user agents to only include that browser (but different versions of it). Try to test the entire list if possible.
Check your HTTP headers to see if your time is being sent. You can just spoof that and don't bother with timezone.4) I did not set my timezone to that of the country in which the proxy server resides.
I don't know if this matters. I would open the registration page in a regular browser, then watch http traffic as I type. Is there a request sent with every keystroke? (or another event, such as losing focus to a control). If so, then this is worth looking into.5) I was injecting the values directly into the page as opposed to sending clicks and keypresses.
I have seen this exact same countermeasure elsewhere. Definitely throw in a realistic delay between requesting the registration page and submitting it.6) My bot worked quickly. Perhaps google thought the form was being filled out too quickly.
I know Google discriminates against an entire IP block if one or more IPs in that block are fucking around. I'd maintain my tests to as few phone numbers as possible until it's working 100%.7) All of the numbers I was using for verification were from the company I worked for, which means google may see too many verification requests for the same telecoms provider. I doubt this is the case.
Worth a try since it's fairly easy in .NET. But there are a lot of other footprints too; the fonts you have installed, plugins in the browser, flash/silverlight/unity extensions. This is why I suggest staying away from WebBrowser controls.8) I did not vary my screen size for each account created. I definitely think this had something to do with it, especially as the web browser itself was a strange size. I should make it fullscreen or change to a random, realistic size each time.
Clever, but not clever enough;In addition to that header work I've done some more involving user agents and proxies. Here's my code so far if you're interested. Before request() is called, the WebBrowser quickly expands to fullscreen to trick the webpage into believing it's a normal browser size c:
- There is no "normal browser size" - users have different size monitors and different resolutions set. Always maximizing will leave a footprint
- Your webbrowser control is inside your application. Your software software may take up the full screen, but the browser control itself has smaller width/height than the rest of your screen. This might screw you over since all your requests will be from the exact same size browser, and a rare one (regular users don't browse Google in a webbrowser control in a custom C# program)
- Instead, set the webbrowser control to a random size, selected from a list of common sizes.
- Consider adding more user agents
- Consider using a local text file for proxies, at least while testing
- Test the proxy is not leaking your IP every time before using it on Google
- Syncronize "Accept-Language" to match up with the proxy's country. the hardcoded "en-GB" is UK specific.
- Pay attention to "Accept" header. Different requests will have different Accept - for example an AJAX request that expects JSON response will have a JSON accept header.
- Catching an exception may put it in an infinite loop. Consider adding a counter, and exit if it fails 3 times or something.
Edit; clarification