I am writing a tool for osint in python 3 that has the purpose of finding people's emails.
The program works on 3 levels based on the complexity of the emails to be found, 70% of the emails I have collected are identifiable in the first level that takes into account the name, surname, year of birth and instagram profile.
The program uses the instagram profile to obtain the obfuscated email to obtain the domain es. @gmial.com and uses the other information to generate a list of possible emails.
The problem is when there is a need to validate the emails, obviously a list of 20 emails is quite useless, at least by eliminating those that do not exist you get a good screening, the validation is done through the validate_email module using the method
is_valid = validate_email('[email protected]',verify=True)
worked well but took about 3 seconds to return a response, so I decided to speed it up by testing the emails in multi thread using concurrent.futures, at this point with my 20 threads at the same time everything was going wonderfully until validate_email started returning "none".
I'm doing some research on the library this happens when the server refuses to give a response, I assume that my ip was blocked by gmail dos protection or something like that, because initially everything worked.
I have not tried to use a vpn yet also because I would not know how to do it. How can I solve this problem? for level 1 the emails to test are just 20/30 but on level 2 the emails increase up to 500/700.
I could obviously impose a limit of requests per minute on the program to avoid being blocked but I would solve the problem temporarily and I don't know what is the limit of requests that google is willing to tolerate before starting to ignore me.
Does anyone have an idea of how much this limit could be? would a vpn solve the problem? Are there libraries less old than validate_email that I can use? It is a library that is almost 12 years old and does not wear them very well.
I have already tried to search on the library github but I have not found anything except another person who like me hypothesizes that it is an ip block. To verify I tried again by changing the connection of my device and I verified that both the private and public ip had changed and it worked. It would be nice if I could change the public ip for each thread but I do not think it is possible.