diff --git a/stubs/python-selenium/README.md b/stubs/python-selenium/README.md new file mode 100644 index 0000000..de9187c --- /dev/null +++ b/stubs/python-selenium/README.md @@ -0,0 +1,17 @@ +# How to run: + +``` +python firefox.py +python chrome.py + +``` + +# Dependencies: + +Python 2.7 +selenium installed (`pip install selenium` to command line) +Chromium webdriver (https://sites.google.com/a/chromium.org/chromedriver/downloads) + +Tested on MacOS 10.11.6 + +Note: It looks like Chrome has SSL checks always disabled diff --git a/stubs/python-selenium/chrome.py b/stubs/python-selenium/chrome.py new file mode 100644 index 0000000..d4c6065 --- /dev/null +++ b/stubs/python-selenium/chrome.py @@ -0,0 +1,16 @@ +from common import SeleniumSSLTest +from selenium import webdriver + + +class ChromeSSLTest(SeleniumSSLTest): + failing_titles = ('Problem loading page', + 'Insecure Connection', + 'failed to load', + 'is not private') + + def init_driver(self): + self.driver = webdriver.Chrome( + desired_capabilities={'acceptSslCerts': False}) + + +ChromeSSLTest() diff --git a/stubs/python-selenium/common.py b/stubs/python-selenium/common.py new file mode 100644 index 0000000..dd92a75 --- /dev/null +++ b/stubs/python-selenium/common.py @@ -0,0 +1,40 @@ + +import re +import sys + + +class SeleniumSSLTest(object): + driver = None + failing_titles = () + + def __init__(self): + if len(sys.argv) < 3: + exit("Usage: %s " % sys.argv[0]) + elif len(sys.argv) > 3: + print("UNSUPPORTED") + exit(0) + + host = sys.argv[1] + port = sys.argv[2] + url = "https://" + host + ":" + port + self.init_driver() + self.run_test(url) + + def run_test(self, url): + if self.driver is None: + exit("No driver") + self.driver.get_log('browser') + self.driver.get(url) + + for t in self.failing_titles: + if t in self.driver.title: + logs = [x.get('message', '') + for x in self.driver.get_log('browser')] + ssl_logs = filter(lambda x: re.search( + '(ssl|tls|https)', x, re.IGNORECASE), logs) + print(''.join(ssl_logs)) + print("REJECT") + break + else: + print("ACCEPT") + self.driver.close() diff --git a/stubs/python-selenium/firefox.py b/stubs/python-selenium/firefox.py new file mode 100644 index 0000000..061bc57 --- /dev/null +++ b/stubs/python-selenium/firefox.py @@ -0,0 +1,15 @@ +from common import SeleniumSSLTest +from selenium import webdriver + + +class FirefoxSSLTest(SeleniumSSLTest): + failing_titles = ('Problem loading page', + 'Insecure Connection', + 'failed to load', + 'is not private') + + def init_driver(self): + self.driver = webdriver.Firefox(capabilities={'acceptSslCerts': False}) + + +FirefoxSSLTest()