#拦截器 #headless_chrome #rust
目前在使用的比较多的的无头浏览器一般都是JS/TS的Puppteer或者Python的Selenium
当然我推荐Puppteer,因为这个库是Chromeium小组在维护的,今天我要带来的是Rust的headless_chrome库,我这几天因为工作原因一直在弄这个库,也翻阅了很多资料,之后我也打算去为这个开源项目贡献一些代码,好了回到正题,怎么在无头浏览器中添加拦截器?
什么是拦截器?
写过后端项目的程序员肯定是知道这个概念的,当然我们在这里重新解释一次更好
拦截器是一个中间件,它不改动原有代码,对于网络请求发送之前和网络响应接收之后进行拦截和处理。
拦截器特型
在Rust的headless_chrome库中的拦截器是RequestInterceptor
这是一个特型,下面给出一个示例教你怎么使用它
pub struct OnGoodItemRequestInterceptor;
impl RequestInterceptor for OnGoodItemRequestInterceptor {
fn intercept(
&self,
_transport: Arc<Transport>,
_session_id: SessionId,
event: RequestPausedEvent,
) -> RequestPausedDecision {
match event.params {
RequestPausedEventParams { .. } => {}
}
RequestPausedDecision::Continue(None)
}
}
unsafe impl Send for OnGoodItemRequestInterceptor {}
unsafe impl Sync for OnGoodItemRequestInterceptor {}
这里实现了一个特型,event
变量里面存放着发送或者响应的数据,返回的类型是RequestPausedDecision
,后面我会对这个简单介绍一下
About this Post
This post is written by JinHong Zeng, licensed under CC BY-NC 4.0.