簡體   English   中英

在nodejs環境的aws lambda模塊中提出請求時,將為兩個特定域返回403

[英]When request is made in aws lambda module of nodejs environment, 403 is returned for two specific domains

在nodejs環境的aws lambda模塊中提出請求時,將為兩個特定域返回403。 但是,僅調用該域將不會返回403。這同樣適用於請求模塊,而不適用於征服者模塊。

在本地執行相同的邏輯通常會將所有響應返回到200。

這是上傳到lambda的源。

const Crawler = require('crawler');
const urls = [
  'http://www.ddengle.com',
  'http://www.cointalk.co.kr',
  'http://www.chaintalk.io',
  'http://www.coinpan.com',
  'http://www.hozaebox.com',
  'https://gall.dcinside.com/board/lists?id=bitcoins',
  'https://gall.dcinside.com/mgallery/board/lists?id=coin',
];

exports.handler = async (event) => {
  return new Promise(async (resolve) => {
    const crawler = new Crawler({
      maxConnections: 10,
      jQuery: 'whacko',
      callback(err, res, done) {
        if (err) throw err;
        const hostname = res.request.uri.hostname;

        if (res.statusCode === 200) {
          console.log(hostname);
        } else console.log(`[crawler] ${hostname} statusCode ${res.statusCode}`);

        done();
      },
    });

    crawler.on('drain', () => {
      resolve();
    });

    urls.forEach((e) => {
      crawler.queue([{
        headers: {
          'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
        },
        uri: e,
      }]);
    });
  });
};

出於我的目的,這只是一個請求調用,因此所有值都應以200回答。但是,對lambda運行測試將為www.ddengle.com或coinpan.com無條件返回403。

START RequestId: f3cc4977-11af-4ab1-9556-9b778efd1f72 Version: $LATEST
2019-08-23T08:13:36.593Z    f3cc4977-11af-4ab1-9556-9b778efd1f72    INFO    www.chaintalk.io
2019-08-23T08:13:36.811Z    f3cc4977-11af-4ab1-9556-9b778efd1f72    INFO    [crawler] www.ddengle.com statusCode 403
2019-08-23T08:13:37.170Z    f3cc4977-11af-4ab1-9556-9b778efd1f72    INFO    www.hozaebox.com
2019-08-23T08:13:37.454Z    f3cc4977-11af-4ab1-9556-9b778efd1f72    INFO    gall.dcinside.com
2019-08-23T08:13:37.873Z    f3cc4977-11af-4ab1-9556-9b778efd1f72    INFO    gall.dcinside.com
2019-08-23T08:13:38.391Z    f3cc4977-11af-4ab1-9556-9b778efd1f72    INFO    www.cointalk.co.kr
2019-08-23T08:13:39.153Z    f3cc4977-11af-4ab1-9556-9b778efd1f72    INFO    coinpan.com
END RequestId: f3cc4977-11af-4ab1-9556-9b778efd1f72

請將您的Lambda移至VPC,然后從特定IP發出Lambda請求。 我假設Lambda在VPC外部運行(默認行為)時,沒有與其關聯的IP,並且您嘗試爬網的網站可能會將其阻止。

ddengle.com域似乎受到cloudflare的保護,只能通過https訪問。

curl -I http://www.ddengle.com
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Aug 2019 08:31:50 GMT
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Fri, 23 Aug 2019 09:31:50 GMT
Location: https://www.ddengle.com/
X-Content-Type-Options: nosniff
Server: cloudflare

它可以是國家/地區阻止,WAF,瀏覽器完整性檢查...

此處的完整列表: https : //community.cloudflare.com/t/community-tip-fixing-error-403-forbidden/53308

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM