中间件 #
middleware/pipeline包括框架内置、公共自定义(internal/middlewares,internal/pipelines)和爬虫内自定义(和爬虫同module)。 请确保不同中间件和Pipeline的order值不重复。如果有重复的order值,后面的中间件或Pipeline将替换前面的中间件或Pipeline。
在框架中,内置的中间件具有预定义的order值,这些order值是10的倍数,例如10、20、30等。
为了避免与内置中间件的order冲突,建议自定义中间件时选择不同的order值。
当您自定义中间件时,请选择避开内置中间件的order值。
根据中间件的功能和需求,按照预期的执行顺序进行配置。确保较低order值的中间件先执行,然后依次执行较高order值的中间件。
内置的中间件和自定义中间件使用默认的order值即可。
如果需要改变默认的order值,需要spider.WithOptions(pkg.WithMiddleware(new(middleware), order)启用该中间件并应用该order值。
- custom: 10
- 自定义中间件
spider.WithOptions(pkg.WithCustomMiddleware(new(CustomMiddleware))
- retry: 20
- 请求重试中间件,用于在请求失败时进行重试。
- 默认最大重试次数为10。可以通过配置项enable_retry_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithRetryMiddleware()
- dump: 30
- 控制台打印item.data中间件,用于打印请求和响应的详细信息。
- 可以通过配置项enable_dump_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithDumpMiddleware()
- proxy: 40
- 用于切换请求使用的代理。
- 可以通过配置项enable_proxy_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithProxyMiddleware()
- robotsTxt: 50
- robots.txt支持中间件,用于支持爬取网站的robots.txt文件。
- 可以通过配置项enable_robots_txt_middleware来启用或禁用,默认禁用。
spider.WithOptions(pkg.WithRobotsTxtMiddleware()
- filter: 60
- 过滤重复请求中间件,用于过滤重复的请求。默认只有在Item保存成功后才会进入去重队列。
- 可以通过配置项enable_filter_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithFilterMiddleware()
- file: 70
- 自动添加文件信息中间件,用于自动添加文件信息到请求中。
- 可以通过配置项enable_file_middleware来启用或禁用,默认禁用。
spider.WithOptions(pkg.WithFileMiddleware()
- image: 80
- 自动添加图片的宽高等信息中间件
- 用于自动添加图片信息到请求中。可以通过配置项enable_image_middleware来启用或禁用,默认禁用。
spider.WithOptions(pkg.WithImageMiddleware()
- url: 90
- 限制URL长度中间件,用于限制请求的URL长度。
- 可以通过配置项enable_url_middleware和url_length_limit来启用和设置最长URL长度,默认启用和最长长度为2083。
spider.WithOptions(pkg.WithUrlMiddleware()
- referrer: 100
- 自动添加Referrer中间件,用于自动添加Referrer到请求中。
- 可以根据referrer_policy配置项选择不同的Referrer策略,DefaultReferrerPolicy会加入请求来源,NoReferrerPolicy不加入请求来源
- 配置 enable_referrer_middleware: true 是否开启自动添加referrer,默认启用。
spider.WithOptions(pkg.WithReferrerMiddleware()
- cookie: 110
- 自动添加Cookie中间件,用于自动添加之前请求返回的Cookie到后续请求中。
- 可以通过配置项enable_cookie_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithCookieMiddleware()
- redirect: 120
- 网址重定向中间件,用于处理网址重定向,默认支持301和302重定向。
- 可以通过配置项enable_redirect_middleware和redirect_max_times来启用和设置最大重定向次数,默认启用和最大次数为1。
spider.WithOptions(pkg.WithRedirectMiddleware()
- chrome: 130
- 模拟Chrome中间件,用于模拟Chrome浏览器。
- 可以通过配置项enable_chrome_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithChromeMiddleware()
- httpAuth: 140
- HTTP认证中间件,通过提供用户名(username)和密码(password)进行HTTP认证。
- 需要在具体的请求中设置用户名和密码。可以通过配置项enable_http_auth_middleware来启用或禁用,默认禁用。
spider.WithOptions(pkg.WithHttpAuthMiddleware()
- compress: 150
- 支持gzip/deflate/br解压缩中间件,用于处理响应的压缩编码。
- 可以通过配置项enable_compress_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithCompressMiddleware()
- decode: 160
- 中文解码中间件,支持对响应中的GBK、GB2312、GB18030和Big5编码进行解码。
- 可以通过配置项enable_decode_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithDecodeMiddleware()
- device: 170
- 修改请求设备信息中间件,用于修改请求的设备信息,包括请求头(header)和TLS信息。目前只支持User-Agent随机切换。
- 需要设置设备范围(Platforms)和浏览器范围(Browsers)。
- Platforms: Windows/Mac/Android/Iphone/Ipad/Linux
- Browsers: Chrome/Edge/Safari/FireFox
- 可以通过配置项enable_device_middleware来启用或禁用,默认禁用。
spider.WithOptions(pkg.WithDeviceMiddleware()
- http: 200
- 创建请求中间件,用于创建HTTP请求。
- 可以通过配置项enable_http_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithHttpMiddleware()
- stats: 210
- 数据统计中间件,用于统计爬虫的请求、响应和处理情况。
- 可以通过配置项enable_stats_middleware来启用或禁用,默认启用。
spider.WithOptions(pkg.WithStatsMiddleware()
- recordError: 220
- 错误记录中间件,用于记录请求,以及请求和解析中出现的错误。
- 可以通过配置项enable_record_error_middleware来启用或禁用,默认禁用。
spider.WithOptions(pkg.WithRecordErrorMiddleware())