2010-11-16 63 views
3

我在Python 3.1.2中編寫腳本,登錄到一個站點,然後開始發出請求。我可以登錄,沒有任何巨大的困難,但這樣做後,請求返回一個錯誤,說明我還沒有登錄我的代碼如下所示:在Python3中使用cookie處理程序處理站點請求的正確方法是什麼?

import urllib.request 
from http import cookiejar 
from urllib.parse import urlencode 

jar = cookiejar.CookieJar() 

credentials = {'accountName': 'username', 'password': 'unenc_pw'} 
credenc = urlencode(credentials) 

opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar)) 
urllib.request.install_opener(opener) 
req = opener.open('http://www.wowarmory.com/?app=armory?login&cr=true', credenc) 
test = opener.open('http://www.wowarmory.com/auctionhouse/search.json') 
print(req.read()) 

print(test.read()) 

到第一請求的響應是我所希望的網頁爲了獲得在登錄時

到第二響應爲:

b'{"error":{"code":10005,"error":true,"message":"You must log in."},"command":{"sort":"RARITY","reverse":false,"pageSize":20,"end":20,"start":0,"minLvl":0,"maxLvl":0,"id":0,"qual":0,"classId":-1,"filterId":"-1"}}' 

有我丟失的東西用我從成功認證爲將來的請求任何cookie信息?

+0

我在Chrome和curl中獲得了與第二個URL完全相同的響應。你有理由相信第一個網址應該讓你登錄到第二個網站嗎? (順便說一句,它真的應該是'?app = armory?login&cr = true'?) – 2011-05-14 03:16:16

回答

0

我曾經遇到過這個問題。我無法自動獲取cookie管理cookie。沮喪了幾天,我最終手動處理cookie。這是從響應頭獲取'Set-Cookie'的內容,並將其保存在某個安全的地方。隨後,對該服務器發出的任何請求,我將使用之前獲得的值將「Cookie」設置到請求標頭中。

相關問題