Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

253
Vistas
Código de respuesta 403: solicitud bloqueada al usar las API de configuración de Cowin

Solo estaba tratando de generar una alerta de vacuna covid usando Cowin Setu API (India) en nodejs. Pero me enfrento a algo extraño, cada vez que presiono obtener solicitud, recibo un código de respuesta 403 de cloudfront que dice "Solicitud bloqueada", pero lo mismo funciona tanto desde el cartero como desde el navegador. Por favor, ayúdame en esto

Obteniendo este error: -

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <TITLE>ERROR: The request could not be satisfied</TITLE> </HEAD><BODY> <H1>403 ERROR</H1> <H2>The request could not be satisfied.</H2> <HR noshade size="1px"> Request blocked. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner. <BR clear="all"> If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation. <BR clear="all"> <HR noshade size="1px"> <PRE> Generated by cloudfront (CloudFront) Request ID: Q1RZ94qgFp6AjUUKE4e9urMB85VejcqMbaJO6Y8Xq5Qp4kNjDBre9A== </PRE> <ADDRESS> </ADDRESS> </BODY></HTML>

Aquí está mi código nodejs:

 var express = require("express"); var app = express(); var bodyParser = require("body-parser"); const axios = require("axios"); const { Telegram } = require("telegraf"); const fetch = require("node-fetch"); var cors = require('cors'); var request=require('request'); const tg = new Telegram(process.env.BOT_TOKEN); const bot = new Telegram(process.env.BOT_TOKEN, { polling: true }); //bot.start((ctx) => ctx.reply('Welcom to Covid Vaccine Finder')) /*bot.hears("about", ctx => { ctx.reply("Hey, I am CoviBot!"); }); bot.launch();*/ app.use(bodyParser.json()); app.use(cors()); app.use( bodyParser.urlencoded({ extended: true }) ); app.get("/", function(req, res) { res.send("Welcom to Covid Vaccine Finder"); }); app.get("/test", function(req, res, next) { var d = new Date(); var options = { year: "numeric", month: "2-digit", day: "2-digit" }; var date = String(d.toLocaleDateString("en", options)); date = date.replace(/\//g, "-"); console.log(date); const URL = "https://cdn-api.co-vin.in/api/v2/appointment/sessions/public/findByPinpincode=110088&date=13-05-2021"; var options = { url: URL, method: 'GET', headers: { 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'en-GB,en;q=0.8,en-US;q=0.6,hu;q=0.4', 'Cache-Control': 'max-age=0', Connection: 'keep-alive', Host: 'cdn-api.co-vin.in', 'User-Agent': 'request', } }; request(options,function(err,res,body){ let json = body; console.log(json); }); const txt = "Finding vaccine centres for you...."; //tg.sendMessage(process.env.GROUP_ID, txt); res.send(txt); }); // Finally, start our server app.listen(process.env.PORT, function() { console.log("Covid app listening on port 3000!"); });

Espero que este problema se solucione

Gracias

over 4 years ago · Santiago Trujillo
8 Respuestas
Responde la pregunta

0

Usar lo siguiente

 var options = { url: URL, method: 'GET', headers: { Host: 'cdn-api.co-vin.in', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36' } };
over 4 years ago · Santiago Trujillo Denunciar

0

Agregué un encabezado user-agent a la solicitud para que la API reconozca que mi solicitud proviene de un navegador, en lugar de un script.

 headers = { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', } url = "https://cdn-api.co-vin.in/api/v2/appointment/sessions/public/calendarByDistrict?district_id=303&date="+date response = requests.get(url, headers=headers)
over 4 years ago · Santiago Trujillo Denunciar

0

Debe usar la API de identificador de agente de usuario. Consulte esto https://devcenter.heroku.com/articles/useragentidentifier#using-with-python

over 4 years ago · Santiago Trujillo Denunciar

0

Debe realizar su solicitud en el siguiente formato, adjunto un formato de muestra para la API de metadatos de estados:

curl --ubicación --solicitud OBTENER 'https://cdn-api.co-vin.in/api/v2/admin/ubicación/estados' --header 'Aceptar-Idioma: hi_IN' --header 'Aceptar: aplicación /json' --header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/90.0.4430.93 Safari/537.36'

over 4 years ago · Santiago Trujillo Denunciar

0

Pruebe estos encabezados. Funcionaron para mí en el servidor local (no en producción)

 let options = { headers: { "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36", }, };

Estos no funcionarán en producción porque las API de Cowin están geovalladas y no se puede acceder desde una dirección IP que no sea india. En la mayoría de los sitios de alojamiento gratuitos como Heroku, la IP india no es una opción. Entonces, la solución alternativa podría ser usar AWS, GCP, Azure con un servidor indio (aún no probado).

Referencia: https://github.com/cowinapi/developer.cowin/issues/228

over 4 years ago · Santiago Trujillo Denunciar

0

No se trata de la solicitud de agente de usuario o formato. Enfrenté el mismo problema y pruebas adicionales demostraron que cloudFront está bloqueando la IP si varias solicitudes provienen de la misma IP consecutivamente. También se desbloquea después de un par de minutos. Básicamente, no quieren que estos alerten esto, probablemente esté sobrecargando su servidor.

over 4 years ago · Santiago Trujillo Denunciar

0

Parece que la API no puede usarse fuera de la India. Intente combinar algún proxy indio/uso en el servidor indio

over 4 years ago · Santiago Trujillo Denunciar

0

Ok, si quieres trabajar localmente, puedes usar

 let headers = { 'accept': 'application/json', 'Accept-Language': 'hi_IN', 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36', }

Ahora, si desea implementar en Heroku o Firebase, devolverá 403, creo que se debe principalmente a que están bloqueando cualquier IP fuera del servidor indio.

Enlace Github: https://github.com/manojkumar3692/reactjs_nodejs_cowin

Te mantendré informado aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda