处理 basic 授权

有些网站使用一种称为基本授权的授权形式。 这在其他授权方式(例如 cookie auth 或 OAuth)之前就很流行。 它在企业内部网和一些 Web API 上也很常见。 在基本授权中,HTTP 请求中会添加一个标头。 此标头 “Authorization” 将传递 Basic 字符串,然后传递值 <username>:<password> 的 Base64 编码。 因此,对于 darkhelmet,此标头将如下所示:

Authorization: Basic ZGFya2hlbG1ldDp2ZXNwYQ==, with
ZGFya2hlbG1ldDp2ZXNwYQ== being darkhelmet:vespa base 64 encoded.

请注意,这并不比以纯文本发送更安全(尽管通过 HTTPS 执行时是安全的)。不过,在大多数情况下,它已被更强大的授权形式所取代,甚至 Cookie 授权也允许更复杂的功能,如索赔:

如何做

在 Scrapy 中支持基本身份验证非常简单。 要使其适用于蜘蛛和蜘蛛正在爬行的给定站点,只需在抓取工具中定义 http_user、http_pass 和 name 字段即可。 下面演示:

class SomeIntranetSiteSpider(CrawlSpider):
    http_user = 'someuser'
    http_pass = 'somepass'
    name = 'intranet.example.com'
    # .. rest of the spider code omitted ...

工作原理

当 spider 抓取由名称指定的给定站点上的任何页面时,它将使用 http_user 和 http_pass 的值来构造适当的标头。

还有更多

请注意,此任务是由 Scrapy 的 HttpAuthMiddleware 模块执行的。 有关基本授权的更多信息还可访问: https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication