def SetCookie(self): cookieManager = self.mainBrowser.GetUserData("cookieManager") if not cookieManager: print("\nCookie manager not yet created! Visit http website first") return cookie = cefpython.Cookie() cookie.SetName("Created_Via_Python") cookie.SetValue("yeah really") cookieManager.SetCookie("http://www.html-kit.com/tools/cookietester/", cookie) print("\nCookie created! Visit html-kit cookietester to see it")
def snap(command, width=800, height=600): metadata = {} try: logging.info("Snapshot url: %s" % command['url']) metadata['timestamp'] = int(time()) metadata['error'] = "0" parent_dir = os.path.dirname(command['file']) if parent_dir and not os.path.exists(parent_dir): os.makedirs(parent_dir) if 'screen_width' in command: width = command['screen_width'] if 'screen_height' in command: height = command['screen_height'] cefpython.g_debug = False commandLineSwitches = dict() if 'proxies' in command: proxy = command['proxies'][0] logging.info("Proxy server: %s:1080" % proxy) commandLineSwitches['proxy-server'] = "socks5://" + proxy + ":1080" settings = { "log_severity": cefpython.LOGSEVERITY_DISABLE, # LOGSEVERITY_VERBOSE "log_file": "", "release_dcheck_enabled": False, # Enable only when debugging. # This directories must be set on Linux "locales_dir_path": cefpython.GetModuleDirectory() + "/locales", "resources_dir_path": cefpython.GetModuleDirectory(), "multi_threaded_message_loop": False, "unique_request_context_per_browser": True, "browser_subprocess_path": "%s/%s" % (cefpython.GetModuleDirectory(), "subprocess") } cefpython.Initialize(settings, commandLineSwitches) windowInfo = cefpython.WindowInfo() windowInfo.SetAsOffscreen(0) browserSettings = {"default_encoding": "utf-8"} browser = cefpython.CreateBrowserSync(windowInfo, browserSettings, navigateUrl=command['url']) cookieManager = cefpython.CookieManager.CreateManager("") if 'cookie' in command: for k, v in command['cookie'].items(): cookie = cefpython.Cookie() cookie.SetName(k) cookie.SetValue(v) cookie.SetHasExpires(False) cookieManager.SetCookie(command['url'], cookie) browser.SetUserData("cookieManager", cookieManager) #browser = cefpython.CreateBrowserSync(windowInfo, browserSettings, navigateUrl="about:blank") # TODO handle post data #req = cefpython.Request.CreateRequest() #req.SetUrl(command['url']) # req.SetMethod("POST") # a = req.SetPostData([]) #browser.GetMainFrame().LoadRequest(req) browser.SendFocusEvent(True) browser.SetUserData("width", width) browser.SetUserData("height", height) browser.SetUserData("metadata", metadata) browser.SetClientHandler(ClientHandler(browser, command)) jsBindings = cefpython.JavascriptBindings(bindToFrames=True, bindToPopups=True) jsBindings.SetProperty("delay", int(command['delay'])) jsBindings.SetProperty("flash_delay", int(command['flash_delay'])) jsBindings.SetFunction("setPageSize", setPageSize) jsBindings.SetFunction("jsCallback", jsCallback) jsBindings.SetFunction("log", logging.info) browser.SetJavascriptBindings(jsBindings) #browser.WasResized() cefpython.MessageLoop() width = browser.GetUserData("width") height = browser.GetUserData("height") metadata = browser.GetUserData("metadata") image = browser.GetUserData("image") html = browser.GetUserData("html") except: logging.error(sys.exc_info()) traceback.print_exc() metadata['error'] = str(sys.exc_info()) finally: if metadata['error'] == "0": metadata['status'] = "OK" metadata['finished'] = int(time()) else: metadata['status'] = "error" metadata['time_finished'] = int(time()) cefpython.Shutdown() return width, height, image, html, metadata