Como corrigir erro do CORS no Web Crawler Node.js?

1 resposta
G

Estou desenvolvendo um Web Crawler especialmente com Node.js, onde pega vários itens de outros sites simultaneamente, e mostra na tela do navegador (graças ao módulo browserify, onde converte os códigos com outros módulos necessários, o Cheerio e o Request).

No JS:

var unique = require(uniq);

var request = require(request);

var cheerio = require(cheerio);

document.getElementById(“search”).addEventListener(“click”, main); //Evento no botão para iniciar a busca

function main() {

function limpar() {

document.getElementById(“result”).innerHTML = “”;

}
limpar(); //LimpaTela

var busca = document.getElementById("inputProduto").value;

function myTrim(trim) {
    return trim.replace(/^\s+|\s+$/gm, '');
}

urlchip = "https://www.chipart.com.br/produtos/" + busca;
spider();

function spider(){
     request(urlchip, function (err, res, body) {
        if (err) console.log('Erro:' + err);

        var $ = cheerio.load(body);

        function crawler() {

            const produto = [];
            const titulo = [];
            const preco = [];
            const imagem = [];

            const i = 0;

//Pesquisa por itens

$(' .products__list__item li').each(function (i, elem) {
                $(' .product-item-link a').each(function (i, elem) {
                    titulo[i] = myTrim($(this).text().toUpperCase);
                });

                $(' .price').each(function (i, elem) {
                    preco[i] = myTrim($(this).text());
                });

                $(' .product-card__figure img').each(function (i, elem) {
                    imagem[i] = myTrim($(this).attr('src'));
                });

                titulo.join(', ');
                preco.join(', ');
                imagem.join(', ');
                produto.join(', ');

                produto[i] = [titulo[i], preco[i], imagem[i]];

//Contrutor HTML
var html = //Aqui entra as divs para construir os blocos com as pesquisas

document.getElementById("result").innerHTML += html;
            });

            console.log(produto);
        };
        crawler();
    });

}

O problema é que em alguns sites estou sendo barrado por causa do CORS(por questão de segurança e tals). Aparece esse erro:

Access to fetch at “https:// www.chipart.com.br/produtos/processador” from origin ‘http: // localhost:8080’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

Tem como desabilitar o CORS e fazer as pesquisas nesses sites?

OBS: O site da KaBum! deixou puxar as informações.

1 Resposta

L

Só funcionaria se o admin do site fizer essa liberação. O CORS é um mecanismo de segurança para evitar esse tipo de coisa que você está fazendo e é controlado pelo dono do site (já fiz isso tb e me deparei com o mesmo problema).

Criado 8 de abril de 2019
Ultima resposta 9 de abr. de 2019
Respostas 1
Participantes 2