pupppeteer-page-proxy每个页面或请求独立使用代理

本文介绍了pupppeteer-page-proxy模块,它允许为每个Puppeteer页面或请求设置独立代理。文章详细阐述了环境准备、使用方法,包括如何针对特定请求启用代理,以及注意事项,如data-uri请求处理、代理请求超时控制和代理IP查询的定制。此外,还讨论了page-proxy的局限性和二次开发的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 pupppeteer-page-proxy模块简介

puppeteer代理设置方法中介绍了设置代理的几种方式,其中之一是通过拦截请求,再通过http模块转发,给http模块加上代理实现代理设置。pupppeteer-page-proxy[1]nodejs模块就是基于此实现为每个请求或page加代理。其中一些特性如下:

  • 支持每个page或每个请求使用代理。
  • 内部处理cookie。
  • 支持http、https、socks4、socks5 代理。

2 环境准备

需要三个工具:

  • puppeteer 2.1.1
  • pupppeteer-page-proxy 1.2.3
  • nodejs 10+

由于pupppeteer-page-proxy设置代理依赖http-proxy-agent、https-proxy-agent。这两个模块又依赖agent-base。agent-base需要5.0+。而puppeteer2.1.0才将agent-base升级到5.1.1。因此puppeteer版本要使用2.1.1。

pupppeteer-page-proxy发送http请求依赖got[2](一个强大的nodejs http库)。用高版本时got会使用asyn generator因此nodejs版本要升级到10+。否则启动提示语法错误。

3 使用pupppeteer-page-proxy

首先我们为每个请求指定代理。在page.on监听请求,随后通过page proxy发送。以访问百度为例,仅当url包含baidu时才使用代理。当打开页面后,我们查询ip会发送访问百度的ip为代理ip。而访问bing时则不会对请求增加代理。

const puppeteer = require('puppeteer');
const useProxy = require('puppeteer-page-proxy');

(async () => {
   
   
    const browser = await puppeteer.launch({
   
   
        args: [
            '--disable-setuid-sandbox',
            '--no-sandbox',
            '--ignore-certificate-errors',
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值