2
我遇到了一個我無法解決的問題。我能夠成功獲取cookie並在登錄到Web應用程序後使用它們。問題是,Web應用程序設置新的cookie後,我需要點擊幾下。使用urllib2登錄後提取新的cookie
如何在登錄後提取或獲取額外的Cookie?這裏是我的代碼到目前爲止:
def _login_to_page(self,url):
cj = cookielib.CookieJar()
cookiehandler = urllib2.HTTPCookieProcessor(cj)
proxy_support = urllib2.ProxyHandler({"https" : self._proxy})
opener = urllib2.build_opener(cookiehandler, proxy_support)
try:
login_post_data = {'op':'login','user':self._username,'passwd':self._password,'api_type':'json'}
response = opener.open(str(self._path_to_login_url), urllib.urlencode(login_post_data), self._request_timeout).read()
if response:
print "[+] Login successful"
self._login_cookies = cj
else:
"[-] Login has probably failed. Wrong Credentials?"
def get_url_loggedin(self,url):
#the variable self._login_cookies are the cookies from the previous login
cookiehandler = urllib2.HTTPCookieProcessor(self._login_cookies)
proxy_support = urllib2.ProxyHandler({"http" : self._proxy})
opener = urllib2.build_opener(cookiehandler, proxy_support)
urllib2.install_opener(opener)
try:
url_response = opener.open(url, None, self._request_timeout).read()
except Exception,e:
print "[-] Could not read page: "
print "[??] Error: " +repr(e)
對不起,如果我的英語有點奇怪我不是母語的人。
你的英語很不錯,所以不要擔心!一個問題:你現在的代碼有什麼問題?而一個觀察:你可能不應該捕捉所有的例外。只抓住那些可能會被提出來的東西通常會更好,然後只有當你有一些你想要做的東西時纔會更好。 – Ben 2012-08-05 19:03:15
嗯,我沒有看到在你的代碼中提取cookie,而不是你以前提取的'self._login_cookies'。你如何提取這些,爲什麼你不能在另一個地方使用相同的方法? :) – favoretti 2012-08-05 19:03:40
哇,這是快速的傢伙! :)以下是用於解壓縮cookie的以前代碼: – user1577741 2012-08-05 19:05:17