【发布时间】:2016-12-03 12:12:53
【问题描述】:
我正在编写一个代理,它可以捕获在我的 selenium 测试中发出的请求。在硒中我使用了这个
host = '10.203.9.156'
profile = webdriver.FirefoxProfile()
myProxy = "localhost:8899"
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': myProxy,
'ftpProxy': myProxy,
'sslProxy': myProxy,
'noProxy': '' # set this value as desired
})
driver = webdriver.Firefox(proxy=proxy)
接受客户端请求的代理部分
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
###
ssl.wrap_socket(self.socket, ssl_version=ssl.PROTOCOL_TLSv1, keyfile = ??, certfile = ???, server_side=True)
###
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind((self.hostname, self.port))
self.socket.listen(self.backlog)
while True:
conn, addr = self.socket.accept()
logger.debug('Accepted connection %r at address %r' % (conn, addr))
self.handle(conn,addr)
这是与服务器建立连接的部分
self.conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
###
ssl.wrap_socket(self.socket, ssl_version=ssl.PROTOCOL_TLSv1, keyfile = ??, certfile = ???, server_side=True)
###
self.conn.connect((self.addr[0], self.addr[1]))
我可以访问服务器。我的问题是客户端请求接受部分和转发到服务器的部分应该是什么,在###之间,这将允许我以人类可读的格式捕获流量?我不太擅长证书。欢迎任何帮助。
【问题讨论】:
-
github.com/abhinavsingh/proxy.py 也是一个很好的例子,如果你想知道 TLS 拦截又名 MITM 是如何工作的。
标签: python selenium ssl encryption proxy