Splinterによるブラウザ制御(2)

Windows版でSplinter + firefoxを使用すると、CERTIFICATE_VERIFY_FAILEDが出てしまう問題に無理矢理対応。

SSLでの接続時に以下の場所でエラーになっているため、確認処理を無視するように変更。

    def _create_connection(self):
        self._parse_url()
        if self.scheme == 'https':
            self.conn = http_client.HTTPSConnection(self.host, self.port)
        else:
            self.conn = http_client.HTTPConnection(self.host, self.port)
        self.conn.putrequest('GET', self.path)
        self.conn.putheader('User-agent', 'python/splinter')
        if self.auth:
            self.conn.putheader("Authorization", "Basic %s" % self.auth)
        self.conn.endheaders()

こんな感じに…

    def _create_connection(self):
        self._parse_url()
        if self.scheme == 'https':
            import ssl
            ssl_context = ssl.create_default_context()
            ssl_context.check_hostname = False
            ssl_context.verify_mode = ssl.CERT_NONE
            self.conn = http_client.HTTPSConnection(
                self.host,
                self.port,
                context=ssl_context, check_hostname=False
            )
        else:
            self.conn = http_client.HTTPConnection(self.host, self.port)
        self.conn.putrequest('GET', self.path)
        self.conn.putheader('User-agent', 'python/splinter')
        if self.auth:
            self.conn.putheader("Authorization", "Basic %s" % self.auth)
        self.conn.endheaders()

エラーは出なくなるけど危険です。