本地很好,但是當我部署在 aws ec2 服務器上時,它卡在page.goto中,并出現 **errorERR_CONNECTION_REFUSED**
所以我嘗試為 GUI 安裝 TightVNC,與卡在 page.goto 中的情況相同
作業系統:aws ec2 ubuntu18.04 (30Gib)
aws 安全組入站:5000 TCP 0.0.0.0/0
5901 TCP 0.0.0.0/0
80 TCP 0.0.0.0/0
3000 TCP 0.0.0.0/0
22 TCP 0.0.0.0/0
443 TCP 0.0.0.0/0
5901 TCP ::/0
節點--版本:v16.14.2
須藤節點--版本:v16.14.2
npm --版本:8.5.0
sudo npm --version: 8.5.0
谷歌瀏覽器--版本:谷歌瀏覽器 101.0.4951.64
哪個 google-chrome: /usr/bin/google-chrome 我試過了 'executablePath: "/usr/bin/google-chrome"' 但與錯誤相同
在~/file_name/node_modules/puppeteer/.local-chromium/linux-991974/chrome-linux
我輸入“ldd chrome | grep not”時沒有顯示,我安裝了所有東西
我認為與 puppeteer 和 aws ec2 最相關,我搜索并嘗試過
關我什么事?請告訴我
const express = require("express");
const router = express.Router();
const puppeteer = require("puppeteer-extra");
const deepai = require("deepai");
const fs = require("fs");
const CryptoJS = require("crypto-js");
const axios = require("axios");
const StealthPlugin = require("puppeteer-extra-plugin-stealth");
puppeteer.use(StealthPlugin());
const puppeteerOptions = {
headless: true,
ignoreHTTPSErrors: false,
args: [
"--no-sandbox",
"--single-process",
"--no-zygote",
"--disable-setuid-sandbox",
"--disable-gpu",
"--use-gl=egl",
],
dumpio: true,
};
// executablePath: "/usr/bin/google-chrome",
//slowMo: 30, //??? ????? ?? ?? ??
// /usr/bin/google-chrome
// /usr/lib/node_modules/puppeteer/.local-chromium/linux-991974
let browser;
let pageNameH;
router.post("/rpa", (req, res) => {
(async function () {
browser = await puppeteer.launch(puppeteerOptions);
pageNameH = await browser.newPage();
await pageNameH.setDefaultNavigationTimeout(0);
await pageNameH.setViewport({ width: 1366, height: 768 });
console.log("Running tests..");
console.log("req.body.length", req.body.length); //5
console.log("req.body[0]", req.body[0]); //{ Link: 'www.coupang.com' }
console.log("req.body[0].Link", req.body[0].Link); //www.coupang.com
console.log("req.body", req.body);
var click = "";
var ScreenshotName = "";
for (var i = 0; i < req.body.length; i ) {
if (req.body[i].Link) {
await pageNameH.goto(req.body[i].Link);
// await pageNameH.waitFor(500);
console.log("Link");
} else if (req.body[i].Click) {
click = "#" req.body[i].Click;
console.log("Click");
} else if (req.body[i].Input) {
await pageNameH.type(click, req.body[i].Input);
console.log("Input");
} else if (req.body[i] == "Click") {
await pageNameH.waitFor(500);
await pageNameH.keyboard.press("Enter");
await pageNameH.waitFor(500);
await pageNameH.waitForNavigation();
console.log("Button");
} else if (req.body[i].ScreenShot) {
ScreenshotName = req.body[i].ScreenShot ".png";
await pageNameH.screenshot({
path: ScreenshotName,
fullPage: true,
});
console.log("ScreenShot");
} else if (req.body[i].sendSMS) {
var userphoneNo = req.body[i].sendSMS;
// browser.close();
browser.close();
console.log("browser.close");
deepai.setApiKey("241c47f5-d430-4e76-b078-10df6ce6be7f");
var resp = await deepai.callStandardApi("image-similarity", {
image1: fs.createReadStream("coupang.png"),
image2: fs.createReadStream(ScreenshotName),
});
if (resp["output"]["distance"] > 0) {
const user_phone_number = userphoneNo; // SMS? ??? ????
console.log("user_phone_number", user_phone_number);
const date = Date.now().toString(); // ?? string
// ?? ??
const sens_service_id = "ncp:sms:kr:284757485087:projectd";
const sens_access_key = "***";
const sens_secret_key = "***";
const sens_call_number = "01012345678"; //?? ??
// url ?? ?? ??
const method = "POST";
const space = " ";
const newLine = "\n";
const url = `https://sens.apigw.ntruss.com/sms/v2/services/${sens_service_id}/messages`;
const url2 = `/sms/v2/services/${sens_service_id}/messages`;
// signature ?? : crypto-js ??? ???? ???
console.log(1);
const hmac = CryptoJS.algo.HMAC.create(
CryptoJS.algo.SHA256,
sens_secret_key
);
console.log(2);
hmac.update(method);
hmac.update(space);
hmac.update(url2);
hmac.update(newLine);
hmac.update(date);
hmac.update(newLine);
console.log(sens_access_key);
hmac.update(sens_access_key);
const hash = hmac.finalize();
console.log(4);
const signature = hash.toString(CryptoJS.enc.Base64);
console.log(5);
// sens ??? ?? ??
const smsRes = await axios({
method: method,
url: url,
headers: {
"Contenc-type": "application/json; charset=utf-8",
"x-ncp-iam-access-key": sens_access_key,
"x-ncp-apigw-timestamp": date,
"x-ncp-apigw-signature-v2": signature,
},
data: {
type: "SMS",
countryCode: "82",
from: sens_call_number,
content: `?? ???? ??? ??? ????.`,
messages: [{ to: `${user_phone_number}` }],
},
});
console.log("response", smsRes.data);
return res.status(200).json({
message: "SMS sent",
});
} else {
return res.status(404).json({ message: "??? ??? ?? ???" });
}
}
}
})();
});
module.exports = router;
uj5u.com熱心網友回復:
ERR_CONNECTION_REFUSED表示目標站點正在主動拒絕來自您的服務器的連接。
AWS 和其他大型托管服務提供商的 IP 地址經常被商業網站禁止,以避免抓取和爬蟲,因為,讓我們面對現實吧,大多數時候 id 有人從 AWS 訪問它可能是一個機器人。
嘗試使用更不知名的提供商和/或購買一些代理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/476512.html
