pub struct RefererMiddleware {
pub same_origin_only: bool,
pub max_chain_length: usize,
pub include_fragment: bool,
/* private fields */
}Expand description
Referer middleware that automatically sets Referer headers based on the navigation chain
Fields§
§same_origin_only: boolWhether to use same-origin only referer
max_chain_length: usizeMaximum referer chain length to keep in memory
include_fragment: boolWhether to include fragment in referer URL
Implementations§
Source§impl RefererMiddleware
impl RefererMiddleware
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new RefererMiddleware with default config
Examples found in repository?
examples/quotes_scraper.rs (line 102)
83async fn main() -> Result<(), SpiderError> {
84 tracing_subscriber::fmt()
85 .with_env_filter("info,spider_lib=debug")
86 .without_time()
87 .init();
88
89 let crawler = CrawlerBuilder::<_, ReqwestClientDownloader>::new(QuotesSpider)
90 .add_pipeline(DeduplicationPipeline::new(&["text"]))
91 .add_pipeline(CsvExporterPipeline::<QuoteItem>::new("output/quotes.csv")?)
92 .add_middleware(HttpCacheMiddleware::builder().build()?)
93 .add_middleware(
94 RateLimitMiddleware::builder()
95 .use_token_bucket_limiter(5)
96 .build(),
97 )
98 .add_middleware(RetryMiddleware::default().max_retries(2))
99 .add_middleware(UserAgentMiddleware::builder().build()?)
100 .add_middleware(RobotsTxtMiddleware::new())
101 .add_middleware(
102 RefererMiddleware::new()
103 .same_origin_only(true)
104 .max_chain_length(100)
105 .include_fragment(false),
106 )
107 .with_checkpoint_path("output/quotes.bin")
108 .with_checkpoint_interval(Duration::from_secs(15))
109 .max_concurrent_downloads(5)
110 .max_parser_workers(2)
111 .max_concurrent_pipelines(2)
112 .build()
113 .await?;
114
115 crawler.start_crawl().await?;
116
117 Ok(())
118}Sourcepub fn same_origin_only(self, same_origin_only: bool) -> Self
pub fn same_origin_only(self, same_origin_only: bool) -> Self
Set whether to use same-origin only referer.
Examples found in repository?
examples/quotes_scraper.rs (line 103)
83async fn main() -> Result<(), SpiderError> {
84 tracing_subscriber::fmt()
85 .with_env_filter("info,spider_lib=debug")
86 .without_time()
87 .init();
88
89 let crawler = CrawlerBuilder::<_, ReqwestClientDownloader>::new(QuotesSpider)
90 .add_pipeline(DeduplicationPipeline::new(&["text"]))
91 .add_pipeline(CsvExporterPipeline::<QuoteItem>::new("output/quotes.csv")?)
92 .add_middleware(HttpCacheMiddleware::builder().build()?)
93 .add_middleware(
94 RateLimitMiddleware::builder()
95 .use_token_bucket_limiter(5)
96 .build(),
97 )
98 .add_middleware(RetryMiddleware::default().max_retries(2))
99 .add_middleware(UserAgentMiddleware::builder().build()?)
100 .add_middleware(RobotsTxtMiddleware::new())
101 .add_middleware(
102 RefererMiddleware::new()
103 .same_origin_only(true)
104 .max_chain_length(100)
105 .include_fragment(false),
106 )
107 .with_checkpoint_path("output/quotes.bin")
108 .with_checkpoint_interval(Duration::from_secs(15))
109 .max_concurrent_downloads(5)
110 .max_parser_workers(2)
111 .max_concurrent_pipelines(2)
112 .build()
113 .await?;
114
115 crawler.start_crawl().await?;
116
117 Ok(())
118}Sourcepub fn max_chain_length(self, max_chain_length: usize) -> Self
pub fn max_chain_length(self, max_chain_length: usize) -> Self
Set the maximum referer chain length to keep in memory.
Examples found in repository?
examples/quotes_scraper.rs (line 104)
83async fn main() -> Result<(), SpiderError> {
84 tracing_subscriber::fmt()
85 .with_env_filter("info,spider_lib=debug")
86 .without_time()
87 .init();
88
89 let crawler = CrawlerBuilder::<_, ReqwestClientDownloader>::new(QuotesSpider)
90 .add_pipeline(DeduplicationPipeline::new(&["text"]))
91 .add_pipeline(CsvExporterPipeline::<QuoteItem>::new("output/quotes.csv")?)
92 .add_middleware(HttpCacheMiddleware::builder().build()?)
93 .add_middleware(
94 RateLimitMiddleware::builder()
95 .use_token_bucket_limiter(5)
96 .build(),
97 )
98 .add_middleware(RetryMiddleware::default().max_retries(2))
99 .add_middleware(UserAgentMiddleware::builder().build()?)
100 .add_middleware(RobotsTxtMiddleware::new())
101 .add_middleware(
102 RefererMiddleware::new()
103 .same_origin_only(true)
104 .max_chain_length(100)
105 .include_fragment(false),
106 )
107 .with_checkpoint_path("output/quotes.bin")
108 .with_checkpoint_interval(Duration::from_secs(15))
109 .max_concurrent_downloads(5)
110 .max_parser_workers(2)
111 .max_concurrent_pipelines(2)
112 .build()
113 .await?;
114
115 crawler.start_crawl().await?;
116
117 Ok(())
118}Sourcepub fn include_fragment(self, include_fragment: bool) -> Self
pub fn include_fragment(self, include_fragment: bool) -> Self
Set whether to include the fragment in the referer URL.
Examples found in repository?
examples/quotes_scraper.rs (line 105)
83async fn main() -> Result<(), SpiderError> {
84 tracing_subscriber::fmt()
85 .with_env_filter("info,spider_lib=debug")
86 .without_time()
87 .init();
88
89 let crawler = CrawlerBuilder::<_, ReqwestClientDownloader>::new(QuotesSpider)
90 .add_pipeline(DeduplicationPipeline::new(&["text"]))
91 .add_pipeline(CsvExporterPipeline::<QuoteItem>::new("output/quotes.csv")?)
92 .add_middleware(HttpCacheMiddleware::builder().build()?)
93 .add_middleware(
94 RateLimitMiddleware::builder()
95 .use_token_bucket_limiter(5)
96 .build(),
97 )
98 .add_middleware(RetryMiddleware::default().max_retries(2))
99 .add_middleware(UserAgentMiddleware::builder().build()?)
100 .add_middleware(RobotsTxtMiddleware::new())
101 .add_middleware(
102 RefererMiddleware::new()
103 .same_origin_only(true)
104 .max_chain_length(100)
105 .include_fragment(false),
106 )
107 .with_checkpoint_path("output/quotes.bin")
108 .with_checkpoint_interval(Duration::from_secs(15))
109 .max_concurrent_downloads(5)
110 .max_parser_workers(2)
111 .max_concurrent_pipelines(2)
112 .build()
113 .await?;
114
115 crawler.start_crawl().await?;
116
117 Ok(())
118}Trait Implementations§
Source§impl Clone for RefererMiddleware
impl Clone for RefererMiddleware
Source§fn clone(&self) -> RefererMiddleware
fn clone(&self) -> RefererMiddleware
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for RefererMiddleware
impl Debug for RefererMiddleware
Source§impl Default for RefererMiddleware
impl Default for RefererMiddleware
Source§impl<C: Send + Sync> Middleware<C> for RefererMiddleware
impl<C: Send + Sync> Middleware<C> for RefererMiddleware
fn name(&self) -> &str
fn process_request<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_client: &'life1 C,
request: Request,
) -> Pin<Box<dyn Future<Output = Result<MiddlewareAction<Request>, SpiderError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn process_response<'life0, 'async_trait>(
&'life0 mut self,
response: Response,
) -> Pin<Box<dyn Future<Output = Result<MiddlewareAction<Response>, SpiderError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn handle_error<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
_request: &'life1 Request,
error: &'life2 SpiderError,
) -> Pin<Box<dyn Future<Output = Result<MiddlewareAction<Request>, SpiderError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Auto Trait Implementations§
impl Freeze for RefererMiddleware
impl !RefUnwindSafe for RefererMiddleware
impl Send for RefererMiddleware
impl Sync for RefererMiddleware
impl Unpin for RefererMiddleware
impl !UnwindSafe for RefererMiddleware
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more