2016-04-06 9 views
6

私は手動で設定する必要がありますので、デフォルトのスクラピーのクッキーオプションを無効にしました。どのように治療応答からクッキーを取得し、次のリクエストにクッキーを設定しますか?

COOKIES_ENABLED = False 
COOKIES_DEBUG = True 

ここで、同じサイトの応答として受け取った値でCookieを設定する必要があります。私は今、私は

FormRequest.from_response(response, 
       formdata={"username": "asldkfs", "pass": "slskd"}, 
       cookies={cookie[0]:cookie[1]}, 
       meta = {'dont_redirect': True,'handle_httpstatus_list': [302]}, 
       callback=self.redirection) 

def redirection(self,response): 
    self.log("redirection") 
    self.log(response.headers)    
    self.log("Cookie2") 
    cook1 = response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=") 
    self.log(cook1)   
    self.log("end cookie2") 
    return Request("http://something.net/some/sa/"+response.headers.getlist('Location')[0],cookies={cook1[0]:cook1[1]}, 
     callback=self.check_login_response) 

. 
. 
. 

によってフォーム要求にそれを設定しようとしていますので、私はcookie.Doを設定することができませんでした私はいずれかを設定する必要があり、以下のように

cookie = response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=") 

をクッキーを取得することができことができます他の価値、または何が問題になるか?

答えて

1

私はあなたがそれを無効にした場合、あなたはクッキーで作業できないと思います。

2

クッキー引数はCookiesMiddlewareが処理するので、COOKIES_ENABLEDがTrueに設定されている場合にのみ機能します。

したがって、あなたは、ヘッダーに手動で設定する必要があります。

cookie = response.headers.getlist('Set-Cookie')[0].split(';')[0] 

FormRequest.from_response(response, 
      formdata={"username": "asldkfs", "pass": "slskd"}, 
      headers={'Cookie': cookie}, # <--- 
      meta = {'dont_redirect': True,'handle_httpstatus_list': [302]}, 
      callback=self.redirection) 
関連する問題