From 4905ac083b5f570988446a2b9dde3a8747020f1a Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Thu, 11 Jul 2019 10:59:05 +0200 Subject: Cookie injection support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add command-line options injecting individual cookies or cookie file into Chrome. Provide default cookie file. This changes the IRC bot’s command splitting to shlex.split, which allows shell-like argument quoting. Fixes #7. --- crocoite/controller.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'crocoite/controller.py') diff --git a/crocoite/controller.py b/crocoite/controller.py index 2a848e8..4c9c4b3 100644 --- a/crocoite/controller.py +++ b/crocoite/controller.py @@ -33,21 +33,19 @@ from . import behavior as cbehavior from .browser import SiteLoader, RequestResponsePair, PageIdle, FrameNavigated from .util import getFormattedViewportMetrics, getSoftwareInfo from .behavior import ExtractLinksEvent +from .devtools import toCookieParam class ControllerSettings: - __slots__ = ('idleTimeout', 'timeout', 'insecure') + __slots__ = ('idleTimeout', 'timeout', 'insecure', 'cookies') - def __init__ (self, idleTimeout=2, timeout=10, insecure=False): + def __init__ (self, idleTimeout=2, timeout=10, insecure=False, cookies=None): self.idleTimeout = idleTimeout self.timeout = timeout self.insecure = insecure + self.cookies = cookies or [] - def toDict (self): - return dict ( - idleTimeout=self.idleTimeout, - timeout=self.timeout, - insecure=self.insecure, - ) + def __repr__ (self): + return f'' defaultSettings = ControllerSettings () @@ -212,6 +210,7 @@ class SinglePageController: # configure browser tab = l.tab await tab.Security.setIgnoreCertificateErrors (ignore=self.settings.insecure) + await tab.Network.setCookies (cookies=list (map (toCookieParam, self.settings.cookies))) # not all behavior scripts are allowed for every URL, filter them self._enabledBehavior = list (filter (lambda x: self.url in x, @@ -232,6 +231,7 @@ class SinglePageController: 'timeout': self.settings.timeout, 'behavior': list (map (attrgetter('name'), self._enabledBehavior)), 'insecure': self.settings.insecure, + 'cookies': list (map (lambda x: x.OutputString(), self.settings.cookies)), }, } if self.warcinfo: -- cgit v1.2.3