0
我正在尋找一種方法來使用類似於chromeless所做的headless chrome,但不是作爲nodejs端點實現,而是允許將html內容作爲有效負載的平穩請求。RESTful Chromless implementation
我想通過API網關觸發aws lambda運行此服務。有沒有人有這個用例的經驗?
我正在尋找一種方法來使用類似於chromeless所做的headless chrome,但不是作爲nodejs端點實現,而是允許將html內容作爲有效負載的平穩請求。RESTful Chromless implementation
我想通過API網關觸發aws lambda運行此服務。有沒有人有這個用例的經驗?
在你的使用案例中,沒有什麼能夠阻止你使用Chromeless。可以在AWS Lambda函數中使用Chromeless。您可以接收來自AWS API Gateway的(RESTful)請求,然後使用它和Chromeless進行操作。您可以將@serverless-chrome/lambda包與Chromeless結合使用,以便在Lambda中運行無頭Chrome瀏覽器,以便Chrome可用於Chromeless。 Chromeless Proxy以類似的方式工作。例如,您的lambda函數的代碼可能看起來像(這是未經測試的代碼,我只是拼湊,而是應該傳達的想法):
const launchChrome = require('@serverless-chrome/lambda')
const Chromeless = require('chromeless').Chromeless
module.exports.handler = function handler (event, context, callback) {
const body = JSON.parse(event.body) // event.body coming from API Gateway
const url = body.url
const evaluateJs = body.evaluateJs
launchChrome({
flags: ['--window-size=1280x1696', '--hide-scrollbars'],
})
.then((chrome) => {
// Chrome is now running on localhost:9222
const chromeless = new Chromeless({
launchChrome: false,
})
chromeless
.goto(url)
.wait('body')
.evaluate(() => `
// this will be executed in headless chrome
${evaluateJs}
`)
.then((result) => {
chromeless
.end()
.then(chrome.kill) // https://github.com/adieuadieu/serverless-chrome/issues/41#issuecomment-317989508
.then(() => {
callback(null, {
statusCode: 200,
body: JSON.stringify({ result })
})
})
})
.catch(callback)
})
.catch((error) => {
// Chrome didn't launch correctly
callback(error)
})
}
你會發現無邊框問題跟蹤here類似的線程。
披露:我是這些軟件包的合作者/作者。
歡迎來到Stack Overflow。你會發現「有人有......嗎?」在這裏通常不被認爲是一個[好問題](https://stackoverflow.com/help/how-to-ask)。在這裏,一個很好的問題是試圖理解和解決特定的編程問題。例如,在這裏,我建議你需要嘗試你想完成的任務,並且當你手頭有代碼時提出問題,並且提供一個最小化,完整,可驗證的例子(MCVE),這個例子不能像預期的那樣工作。 –
Chromeless看起來應該很容易適應您的使用情況,方法是從請求主體中提取HTML,將其保存到文件或S3存儲桶,然後以編程方式導航到它。 –