2016-06-03 9 views
2

Ich ersuche eine GET zu einem 3rd-Party-API-Dienst von meinem node Back-End.
Ich erhalte eine Antwort von 403 forbidden:Anforderung eines GET fehlgeschlagen in Knoten

request("http://www.giantbomb.com/api/search/?api_key=my_api_key&field_list=name,image,id&format=json&limit=1&query=street%20fighter%203&resources=game",(err,res,body) => { 
    console.log(body); 
}) 

die gleiche Anfrage in meinem Browser gibt die erwarteten Ergebnisse abfragen.
Irgendeine Idee, warum das passieren kann?

EDIT:

die Antwort Körper Logging, erhalte ich die folgende Seite (ohne JS):

<h1>Wordpress RSS Reader, Anonymous Bot or Scraper Blocked</h1> 
<p> 
    Sorry we do not allow WordPress plugins to scrape our site. They tend to be used maliciously to steal our content. We do not allow scraping of any kind. 
    You can load our RSS feeds using any other reader but you may not download our content. 
    <a href='/feeds'>Click here more information on our feeds</a> 
</p> 
<p> 
    Or you're running a bot that does not provide a unique user agent. 
    Please provide a UNIQUE user agent that describes you. Do not use a default user agent like "PHP", "Java", "Ruby", "wget", "curl" etc. 
    You MUST provide a UNIQUE user agent. ...and for God's sake don't impersonate another bot like Google Bot that will for sure 
    get you permanently banned. 
</p> 
<p> 
    Or.... maybe you're running an LG Podcast player written by a 10 year old. Either way, Please stop doing that. 
</p> 
+0

Diese URL erscheint fehlerhaft, warum gibt es vor den Abfrageparametern einen Schrägstrich? Haben Sie überlegt, die URL, die Ihre Software in Ihrem Browser verwendet, genau zu protokollieren, zu kopieren und einzufügen oder haben Sie sie erneut eingegeben? – jonrsharpe

+0

Ich habe es kopieren und einfügen genau so, wie es in meinem Code zu meinem Browser ist. Ich habe versucht, diesen Schrägstrich im Browser zu entfernen, aber beim Senden der Anfrage wurde sie erneut hinzugefügt. – itaied

+0

Haben Sie einen Status im Browser (Cookies, etc.)? Funktioniert es immer noch von einem anonymen Browserfenster? – jonrsharpe

Antwort

1

diese Service erfordert User-Agent in Kopfzeilen, siehe dieses Beispiel

const rp = require('request-promise') 

const options = { 
    method: 'GET', 
    uri: 'http://www.giantbomb.com/api/search/?api_key=my_api_key&field_list=name,image,id&format=json&limit=1&query=street%20fighter%203&resources=game', 
    headers: { 'User-Agent': 'test' }, 
    json: true 
} 

rp(options) 
    .then(result => { 
    // process result 
    }) 
    .catch(e => { 
    // handle error 
    }) 
1

Header User-Agent in Anfrage Fügen Sie ähnliche

var options = { 
    url: 'http://www.giantbomb.com/api/search/? api_key=my_api_key&field_list=name,image,id&format=json&limit=1&query=street%20fighter%203&resources=game', 
    headers: { 
    'User-Agent': 'request' 
    } 
}; 

request(options, (err,res,body) => { 
    console.log(body); 
}) 
+0

Sollte ich den' User-Agent' als 'Anfrage' einstellen? Weil ich immer noch die gleiche '403' bekomme. – itaied

+0

haben nur die http://www.giantbomb.com/api/documentation Dokumentation überprüft und es gibt keine benutzerdefinierten Anforderungen für User-Agent Header-Text, so dass Sie beliebige nicht leere Zeichenfolge festlegen können. Nach dem Setzen Header bekomme ich diese Antwort auf Backend: '{" Fehler ":" Ungültige API-Key "," Grenze ": 0," Offset ": 0," Anzahl_der_Seite_Ergebnisse ": 0," Anzahl_der_gesamt_Ergebnisse ": 0," Status_Code " : 100, "results": []} ' – kaxi1993

+0

Zunächst einmal vielen Dank für Ihre Zeit. Wenn ich einen gefälschten API-Schlüssel im Browser sende, erhalte ich das gleiche Ergebnis, das Sie gepostet haben. Wenn ich denselben gefälschten API-Schlüssel aus meiner Knoten-App sende, erhalte ich 403 verboten, während im Browser 200 OK ist. Ich verstehe es wirklich nicht ... – itaied

Verwandte Themen