日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

Puppeteer设置浏览器代理的三种思路

發布時間:2024/1/23 HTML 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Puppeteer设置浏览器代理的三种思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0 背景

Puppeteer是google推出的操作瀏覽器的框架。當我們通過框架操作瀏覽器去訪問頁面通常需要設置代理。本文簡要總結設置代理的方式。

1 通過啟動參數設置代理

我們通過puppeteer啟動瀏覽器通常可以指定參數,通過--proxy-server參數[1]指定代理。http及https請求的將通過代理服務器訪問。若每次需要更換代理就需要重新通過launch方法來啟動瀏覽器。

const browser = await puppeteer.launch({args: [],ignoreHTTPSErrors: true,headless: false,executablePath: "/chrome-mac/Chromium.app/Contents/MacOS/Chromium", });

這種方式啟動后,默認會有一個打開的page,因此不用再重新打開page對象。用默認的page進行后續訪問即可。

const [page] = await browser.pages();

2 通過代理服務器控制代理邏輯

可以看到--proxy-server設置了代理后,如果ip是一個固定的目標代理地址,那么需要重新啟動瀏覽器才能更換。如果我們自己開發了一個代理服務,與實際代理機器交互的邏輯都集中在這個服務上,那么實際代理機器的訪問通過我們的代理服務控制,這樣我們每次啟動瀏覽器后就固定一個地址即可。

3 通過攔截器與第三方庫實現設置代理功能

1中介紹的方式需要每次重新調用的launch方式啟動瀏覽器更換IP。但我們知道現在很多http庫都可以設置代理。例如在Java中可以通過okhttp,unirest等庫來設置代理。同理nodejs中也有這樣的庫。我們不再通過--proxy-server指定地址,而是通過puppeteer的攔截器功能,將請求攔截,隨后改寫請求。再通過第三方的http庫設置上代理信息。這樣就可以達到不通過launch重啟瀏覽器而是直接在一個page中設置代理的目的。每次有新請求來了也可以達到動態變化的目標。不過這樣處理邏輯還是比較復雜,設計改寫請求,響應結果緩存處理等問題。這篇討論[2]中已經給出了處理方式,可以參考。

4 總結

如果在上規模的系統中代理控制一般統一由統一的代理服務來管理,使用時通過proy-server指定代理信息即可。如果是小規模系統,都是集中式控制可以考慮使用1,3的方式處理。

5 參考資料

[1]chrome命令行參數,https://peter.sh/experiments/chromium-command-line-switches/
[2]代理設置的幾種方法討論,https://github.com/GoogleChrome/puppeteer/issues/678

?

總結

以上是生活随笔為你收集整理的Puppeteer设置浏览器代理的三种思路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。