与urllib2和PyWebKitGtk的Cookies

And*_*ewR 5 python gtk webkit urllib2

我想让urllib2与PyWebKitGtk一起工作以支持cookie.我认为这主要是有效的,但是会话之间的cookie不起作用.cookies.txt文件已保存,它看起来好像在请求中使用了cookie(在Wireshark中检查过),但我看到加载到浏览器窗口的数据似乎没有使用cookie.登录后,关闭应用程序,然后重新启动它,我的登录会话消失了.

我的代码

def load_uri_in_browser(self):
    self.cookiejar = LWPCookieJar(config_dir + "/cookies.txt")
    if os.path.isfile(self.cookiejar.filename):
        self.cookiejar.load(ignore_discard=True)

    #for testing, this does print cookies    
    for index, cookie in enumerate(self.cookiejar):
        print index, '  :  ', cookie        

    self.opener = urllib2.build_opener(
        urllib2.HTTPRedirectHandler(),
        urllib2.HTTPHandler(debuglevel=0),
        urllib2.HTTPSHandler(debuglevel=0),
        urllib2.HTTPCookieProcessor(self.cookiejar))
    self.opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13')]

    self.view = webkit.WebView()        
    self.view.connect('navigation-policy-decision-requested', self.navigation_policy_decision_requested_cb)

    self.mainFrame = self.view.get_main_frame()
    self.mainFrame.load_uri("http://twitter.com")

    #gtk window loaded earlier
    self.window.add(self.view)
    self.window.show_all() 

    self.window.show()

def navigation_policy_decision_requested_cb(self, view, frame, net_req, nav_act, pol_dec):
    uri=net_req.get_uri()
    if uri.startswith('about:'):
        return False

    page = self.opener.open(uri)
    self.cookiejar.save(ignore_discard=True)
    view.load_string(page.read(),None,None,page.geturl())
    pol_dec.ignore()
    return True
Run Code Online (Sandbox Code Playgroud)

Mat*_*ngo 0

我自己也尝试过类似的方法,但无法实现。我不确定 LWPCookieJar,但您可以使用 pywebkitgtk “本机”获得持久 cookie 支持 - 查看我对python webkit webview 的回答 还记得 cookies吗?