【问题标题】:Scrapy: missing cookies in responseScrapy:缺少响应的cookie
【发布时间】:2017-06-16 00:31:31
【问题描述】:

我已经创建了基本的scrapy项目并启用了documentation中的cookiemiddleware。

settings.py

COOKIES_ENABLED = True
COOKIES_DEBUG = True

DOWNLOADER_MIDDLEWARES = {
  'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700  
}

spiders/amazon_spider.py

class AmazonSpider(Spider):
  name = "amazon_spider"
  start_urls = ['https://sellercentral.amazon.com/gp/sc-redirect']

  def parse(self, response):
      self.logger.info(response.headers.getlist('Set-Cookie'))

但是,对于请求

COOKIES_ENABLED = True

响应与请求相同

COOKIES_ENABLED = False

拥有

请启用 Cookie 以继续

在它的身体里。

  1. 使用 Firefox 和 Firebug

请求
GET /gp/sc-redirect HTTP/1.1
主机:sellercentral.amazon.com
用户代理:Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 火狐/50.0
接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
接受语言:en-US,en;q=0.5
接受编码:gzip、deflate、br
DNT:1
连接:保持活动
升级不安全请求:1
响应
找到 HTTP/1.1 302
服务器:服务器
日期:格林威治标准时间 2017 年 1 月 30 日星期一 16:12:51
内容类型:text/html;charset=UTF-8
传输编码:分块
连接:保持活动
位置:https://sellercentral.amazon.com/ap/signin?...
变化:接受编码、用户代理
缓存控制:无缓存、无存储、必须重新验证
过期:0
编译指示:无缓存
内容编码:gzip
设置Cookie:会话ID时间=1486368000l;路径=/;域名=.amazon.com; expires=Mon, 06-Feb-2017 16:12:51 GMT session-id=160-1127516-9252943;路径=/;域名=.amazon.com; expires=星期一,2017 年 2 月 6 日 16:12:51 GMT

  1. 使用 Scrapy

回应
调试:已爬网 (200) https://sellercentral.amazon.com/robots.txt>(引用者:无)
调试:从 https://sellercentral.amazon.com/gp/sc-redirect/> 重定向 (302) 到 https://sellercentral.amazon.com/ap/signin?...>
调试:从 收到 cookie 设置 Cookie:signin-sso-state-us=44538bf3-88d0-410b-9aa0-bc8da4b2d090;域名=.amazon.com;过期=周日,2037 年 1 月 25 日 16:09:14 GMT;路径=/ap/;安全的; HttpOnly
设置 Cookie:ap-fid="";域名=.amazon.com;过期=星期四,1970 年 1 月 1 日 格林威治标准时间 00:00:10;路径=/ap/;安全

这里是完整的log 和完整的最终response body

为什么 Set-Cookie 结果不同,对于这种特殊情况如何使用 Scrapy 处理 cookie?

【问题讨论】:

    标签: python cookies scrapy


    【解决方案1】:

    添加后

    USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0'
    

    settings.py 工作正常,没有抱怨禁用 cookie。

    新的响应是

    调试:已爬网 (200) https://sellercentral.amazon.com/robots.txt>(引用者:无)
    收到的 cookie 来自:
    设置Cookie:会话ID时间=1486368000l;路径=/;域名=.amazon.com; expires=星期一,2017 年 2 月 6 日 23:14:58 GMT
    设置Cookie:会话ID=167-3010519-3678460;路径=/;域名=.amazon.com; expires=星期一,2017 年 2 月 6 日 23:14:58 GMT
    调试:从 https://sellercentral.amazon.com/gp/sc-redirect/> 重定向 (302) 到 https://sellercentral.amazon.com/ap/signin?...>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-27
      • 2016-08-29
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      相关资源
      最近更新 更多