From e89c13dc2c1ee0c54dac78bc89d3cac64ab36246 Mon Sep 17 00:00:00 2001 From: ekultek Date: Fri, 8 Sep 2017 14:27:32 -0500 Subject: [PATCH] proxies are now compatible with selenium, the search engine will not longer see your IP address if a proxy is used --- var/google_search/search.py | 43 +++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/var/google_search/search.py b/var/google_search/search.py index 4327962..ce4ccb5 100644 --- a/var/google_search/search.py +++ b/var/google_search/search.py @@ -6,6 +6,7 @@ import requests from selenium import webdriver from pyvirtualdisplay import Display from selenium.webdriver.common.keys import Keys +from selenium.webdriver.common.proxy import * from lib.settings import ( logger, @@ -41,33 +42,40 @@ def get_urls(query, url, verbose=False, warning=True, user_agent=None, proxy=Non logger.warning(set_color( "your web browser will be automated in order for Zeus to successfully " "bypass captchas and API calls. this is done in order to grab the URL " - "from the search and parse the results. in return this will allow the " - "search engine to see your current IP address and your current user " - "agent. after the URL has been returned; your proxy and user agent " - "configuration will be implemented (if applicable) before the parsing " - "and vulnerability checking occurs...", level=30 + "from the search and parse the results. please give selenium time to " + "finish it's task...", level=30 )) if verbose: logger.debug(set_color( - "running selenium-webdriver and launching browser..", level=10 + "running selenium-webdriver and launching browser...", level=10 )) - if user_agent is not None: + if verbose: + logger.debug(set_color( + "adjusting selenium-webdriver user-agent to '{}'...".format(user_agent), level=10 + )) + if proxy is not None: + proxy_type = proxy.keys() + proxy_to_use = Proxy({ + ''.join(proxy_type): proxy[''.join(proxy_type)] + }) if verbose: logger.debug(set_color( - "adjusting user-agent to '{}'...".format(user_agent) + "setting selenium proxy to '{}'...".format( + ''.join(proxy_type) + "://" + ''.join(proxy.values()) + ), level=10 )) - profile = webdriver.FirefoxProfile() - profile.set_preference("general.useragent.override", user_agent) - browser = webdriver.Firefox(profile) else: - browser = webdriver.Firefox() + proxy_to_use = None + profile = webdriver.FirefoxProfile() + profile.set_preference("general.useragent.override", user_agent) + browser = webdriver.Firefox(profile, proxy=proxy_to_use) - logger.info(set_color("browser will open shortly..")) + logger.info(set_color("browser will open shortly...")) browser.get(url) if verbose: logger.debug(set_color( - "searching search engine for the 'q' element (search button)..", level=10 + "searching search engine for the 'q' element (search button)...", level=10 )) search = browser.find_element_by_name('q') logger.info(set_color( @@ -111,7 +119,6 @@ def parse_search_results( logger.debug(set_color( "checking for user-agent and proxy configuration...", level=10 )) - try: proxy_string = kwargs.get("proxy") except: @@ -135,9 +142,9 @@ def parse_search_results( else: user_agent_info = user_agent_info.format("default user agent '{}'".format(DEFAULT_USER_AGENT)) - proxy_string_info = "using {}..." + proxy_string_info = "setting proxy to {}..." if proxy_string is not None: - proxy_string_info = proxy_string_info.format(proxy_string) + proxy_string_info = proxy_string_info.format(''.join(proxy_string.keys()) + "://" + ''.join(proxy_string.values())) else: proxy_string_info = "no proxy configuration detected..." @@ -149,7 +156,7 @@ def parse_search_results( "attempting to gather query URL..." )) try: - query_url = get_urls(query, url, verbose=verbose, user_agent=user_agent) + query_url = get_urls(query, url, verbose=verbose, user_agent=user_agent, proxy=proxy_string) except Exception as e: if "WebDriverException" in str(e): logger.exception(set_color(