【问题标题】:Is it possible to setup CORS Anywhere on localhost?是否可以在本地主机上设置 CORS Anywhere?
【发布时间】:2020-03-24 07:50:53
【问题描述】:

我正在构建一个网络爬虫作为一个小项目(使用CodeIgniter)。由于 CORS 政策,我不能从某些网站获取数据。

为了绕过它,我使用的是 Rob Wu 的 CORS Anywhere。我将 cors_url 添加到我要从中抓取数据的 URL 之前。

在我达到每小时 200 个请求的最大允许限制之前,一切正常。在点击 200 次后,我得到了一个 HTTP status code: 429Too many requests)。

Screenshot showing Network log.

根据文档,我们可以在 Heroku 上创建自己的 server.js 实例。但是,我想做的是,为我的本地 Apache 服务器(localhost)在本地设置它,只是为了先测试一下。


一些示例代码:

var url = "http://example.com/";
var cors_url = "https://cors-anywhere.herokuapp.com/";

$.ajax({
    method:'GET',
    url : cors_url + url,
    success : function(response){
            //data_scraping_logic...
    }
}

【问题讨论】:

  • 您只需保存示例 cors 服务器代码并使用节点运行它。
  • 你能澄清更多吗?如何使用 CodeIgniter 做到这一点?我对这个概念完全陌生。
  • 我相信 cors-anywhere 内置了速率限制。该限制是从 process.env 访问的,所以我不知道为什么它仍然有效。

标签: codeigniter heroku web-scraping cors cors-anywhere


【解决方案1】:
  • 安装最新节点
  • 将 repo 示例代码保存为 cors.js(我将在下面粘贴)
  • npm install cors-anywhere
  • 运行 node cors - 现在它在 localhost:8080 上运行

示例代码

// Listen on a specific host via the HOST environment variable
var host = process.env.HOST || '0.0.0.0';
// Listen on a specific port via the PORT environment variable
var port = process.env.PORT || 8080;

var cors_proxy = require('cors-anywhere');
cors_proxy.createServer({
    originWhitelist: [], // Allow all origins
    // requireHeader: ['origin', 'x-requested-with'],
    // removeHeaders: ['cookie', 'cookie2']
}).listen(port, host, function() {
    console.log('Running CORS Anywhere on ' + host + ':' + port);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-07
    • 2021-10-01
    • 2012-08-29
    • 2012-03-01
    • 2013-09-02
    • 2020-04-30
    • 2018-07-09
    • 2017-07-11
    相关资源
    最近更新 更多