Bonjour,
Dans le cadre d'une appli en c#, je souhaite pouvoir désérialiser un json à partir d'un site web (l'API du site web Nvidia). En local, mon appli fonctionne bien, quand je passe sur l'hébergement VPS, j'ai systématiquement une erreur :
Exception: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.
Ma fonction est assez simple :
> try
> {
> string jsonStr = await Connection(_config["NvidiaApiLink"]);
> }
> catch (Exception ex)
> {
> Console.WriteLine("Erreur : " + ex.Message);
> }
> Console.WriteLine("ok");
private async Task Connection(string Url)
{
using HttpClient client = new();
string json = await client.GetStringAsync(Url);
return json;
}
Avez vous une idée sur la cause du blocage ? Un paramétrage manquant ?
D'avance merci !
Bonjour,
depuis le VPS, avez-vous déjà fait les tests de base à savoir :
vérifier la résolution DNS ?
ping le site web ? vérifier la résolution DNS ?
fait un essai en CLI via CURL pour voir si un HEAD/GET fonctionne ?
Cordialement, janus57
Bonjour,
Le ping vers api.store.nvidia.com fonctionne bien, j'obtiens une réponse.
Pour le curl -i https://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070~NVGFT080~NVGFT090~NVLKR30S~NSHRMT01~NVGFT060T~187&locale=FR
> HTTP/2 400
> content-type: application/json
> content-length: 60
> x-amzn-requestid: 5aae0328-14df-4207-87ef-649d296fad94
> x-amzn-errortype: BadRequestException
> x-amz-apigw-id: Iihi2H8NIAMFz7Q=
> x-amz-cf-pop: IAD89-P1
> x-amz-cf-id: fhUfebxMdidvkXv53_YXexodwY9nb1wDrv1W5ZHRIP5_b-IwgOKvRw==
> x-edgeconnect-midmile-rtt: 77
> x-edgeconnect-origin-mex-latency: 15
> date: Tue, 09 Nov 2021 13:49:44 GMT
> {"message": "Missing required request parameters: [locale]"}
Merci
Peut être que nvidia bloque les requêtes à l'API depuis des IPs de serveurs…
Il faudrait vérifier que le port est bien ouvert depuis le vps vers l'api…
Comment est ce que je peux faire ça ?
nmap -p 443 ip du serveur ?
C'est juste une idée… Pas dit que ça soit pertinent…
Bonjour,
à priori si cela fonctionne avec un ping+curl mais pas dans l'application en C#, perso je m'orienterai vers un problème au niveau de l'application ().
Je sais pas si vous avez un VPS Windows ou Linux, mais cela doit avoir une incidence également.
Dernière hypothèse, comme le dit @Sich, c'est nvidia qui drop la connexion au niveau applicatif (pour que ce provoque un timeout, mais répond au ping et/ou curl) .
Cordialement, janus57
Bonjour,
Il s'agit d'un VPS Linux
Même pas sur que le curl fonctionne réellement. Je débute mais si je comprend bien curl + url me retourne le code HTML de la page.
Et sur une autre entrée de l'API nvidia j'obtiens :
>
> Access Denied
>
>
Access Denied
> You don't have permission to access "http://api.nvidia.partners/edge/product/search?" on this server.
> Reference #18.90c44d17.1636487361.363a7c46
>
>
Alors que c'est parfaitement accesible depuis un navigateur, et que le HTTPClient ne retourne aucun timeout en local.
Il semble donc avoir un blocage de la part d'OVH, car en locale tout fonctionne correctement.
Bonjour,
Il semble donc avoir un blocage de la part d'OVH
non si vous vous prenez un 403/400 (comme plus haut) le blocage est chez NVidia, pas OVH.
Cordialement, janus57
C'est finalement plutôt moi qui devait mal taper la commande (sans les "" ça retourne une erreur).
curl 'https://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070&locale=FR'
Me retourne bien le contenu de la page web, ca fonctionne dans la console. Donc pas de blocage ni d'interdiction chez Nvidia ou OVH.
C'est finalement plutôt moi qui devait mal taper la commande (sans les "" ça retourne une erreur). Ne pas tenir compte du post "Access Denied".
curl 'https://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070&locale=FR'
Me retourne bien le contenu de la page web, ca fonctionne dans la console.
Pour résumer après 4 jours à tester différentes solutions :
- Appli qui fonctionne en local sous VB.
- Appli qui fonctionne avec une VM Ubuntu local.
- Postman OK.
- ping OK, port 443 ouvert, pas de règle sur le parefeu, Curl OK sur le Sur le VPS OVH.
Mais j'ai toujours un Timeout quand je lance l'appli, qui ne fait rien d'autre qu'un HttpClient en C#.
Avez vous une solution de la dernière chance avant que je tente un autre hébergeur ? Un problème de certificat ?
Merci,
Cordialement
c'est vraiment étrange honnêtement.
Si l'appli est ok en local ce n'est pas un problème d'user agent.
Si le curl passe ce n'est pas un blacklistage de certaines plage IP.
L'appli est un simple bout de code lancé localement ?
Pas de container avec un docker qui ferait une config rzo particulière ?
une config rzo
Non pas de Docker, juste un appli console avec un HttpClient en point d'entrée (le plus simple possible pour le test).
Bonjour,<br /><br /><blockquote><br />Si le curl passe ce n'est pas un blacklistage de certaines plage IP.<br /></blockquote><br />ça peut le rester si c'est filtrer en layer7 ce qui pourrais aussi expliquer la différence entre un "simple" curl ou la requêtes fait en C#<br /><br />Exemple de comportement différent entre un GET et un HEAD et le comportement est identique si on envoie aucun user-agent et/ou un user-agent "fictif" (genre "testing") :<br />[code]<br />:~# curl -I "https://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070&locale=FR"<br />HTTP/2 403<br />content-type: application/json<br />content-length: 0<br />x-amzn-requestid: 4c558f64-34f9-4f40-9ddb-813e170fce60<br />x-amzn-errortype: MissingAuthenticationTokenException<br />x-amz-apigw-id: Iw2BvHewoAMFV3g=<br />x-amz-cf-pop: MXP64-C1<br />x-amz-cf-id: 6-SkkVanuzvidau7rHlBAGHJUgL3yWj9CnNak00A-QBoCR0b0vvJ7g==<br />x-edgeconnect-midmile-rtt: 14<br />x-edgeconnect-origin-mex-latency: 101<br />date: Sat, 13 Nov 2021 22:06:15 GMT<br />[/code]<br />[code]<br />:~# curl 'https://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070&locale=FR'<br />{"success":true,"listMap":[{"is_active":"true","product_url":"https://www.ldlc.com/fiche/PB00393423.html","price":"29.99","fe_sku":"NSHRMT01_FR","locale":"FR"},{"is_active":"true","product_url":"https://www.ldlc.com/fiche/PB00386391.html","price":"84.99","fe_sku":"NVLKR30S_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB99999999.html?offerId\u003dAR202010120163","price":"1549","fe_sku":"NVGFT090_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB80808080.html","price":"719","fe_sku":"NVGFT080_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB60306030.html","price":"419","fe_sku":"NVGFT060T_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB88888888.html?offerId\u003dAR202105250080","price":"1199","fe_sku":"NVGFT080T_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB46678912.html","price":"619","fe_sku":"NVGFT070T_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB45678912.html","price":"519","fe_sku":"NVGFT070_FR","locale":"FR"}]}root@srv-test01:~# curl 'https://api.store.nvidia.com/par<br />[/code]<br />[code]<br />:~# curl -v 'https://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070&locale=FR'<br />* Trying 2a02:26f0:2b00:7::58dd:c61e:443...<br />* Connected to api.store.nvidia.com (2a02:26f0:2b00:7::58dd:c61e) port 443 (#0)<br />* ALPN, offering h2<br />* ALPN, offering http/1.1<br />* successfully set certificate verify locations:<br />* CAfile: /etc/ssl/certs/ca-certificates.crt<br />* CApath: /etc/ssl/certs<br />* TLSv1.3 (OUT), TLS handshake, Client hello (1):<br />* TLSv1.3 (IN), TLS handshake, Server hello (2):<br />* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):<br />* TLSv1.3 (IN), TLS handshake, Certificate (11):<br />* TLSv1.3 (IN), TLS handshake, CERT verify (15):<br />* TLSv1.3 (IN), TLS handshake, Finished (20):<br />* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):<br />* TLSv1.3 (OUT), TLS handshake, Finished (20):<br />* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384<br />* ALPN, server accepted to use h2<br />* Server certificate:<br />* subject: C=US; ST=California; L=Santa Clara; O=Nvidia Corporation; CN=it.nvidia.com<br />* start date: Jul 8 00:00:00 2021 GMT<br />* expire date: Jul 13 23:59:59 2022 GMT<br />* subjectAltName: host "api.store.nvidia.com" matched cert's "*.store.nvidia.com"<br />* issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA<br />* SSL certificate verify ok.<br />* Using HTTP2, server supports multi-use<br />* Connection state changed (HTTP/2 confirmed)<br />* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0<br />* Using Stream ID: 1 (easy handle 0x5567682c6270)<br />> GET /partner/v1/feinventory?skus=FR~NVGFT070&locale=FR HTTP/2<br />> Host: api.store.nvidia.com<br />> user-agent: curl/7.74.0<br />> accept: */*<br />><br />* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):<br />* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):<br />* old SSL session ID is stale, removing<br />* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!<br />< HTTP/2 200<br />< content-type: application/json<br />< content-length: 1147<br />< x-amzn-requestid: d29c8881-e1be-4995-95f2-f6569f5c75e6<br />< access-control-allow-origin: *<br />< x-amz-apigw-id: Iw2x6GsqoAMFXdw=<br />< x-amzn-trace-id: Root=1-6190380c-4417ae0311c0179b5ef3be5f;Sampled=1<br />< x-amz-cf-pop: MXP64-C1<br />< x-amz-cf-id: ZLMGQe2BuX66TIfptcuulwWIm4a9o3pAj92nuYgIrFyNNCtms1DIWA==<br />< x-edgeconnect-midmile-rtt: 19<br />< x-edgeconnect-origin-mex-latency: 146<br />< date: Sat, 13 Nov 2021 22:11:24 GMT<br /><<br />{"success":true,"listMap":[{"is_active":"true","product_url":"https://www.ldlc.com/fiche/PB00393423.html","price":"29.99","fe_sku":"NSHRMT01_FR","locale":"FR"},{"is_active":"true","product_url":"https://www.ldlc.com/fiche/PB00386391.html","price":"84.99","fe_sku":"NVLKR30S_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB99999999.html?offerId\u003dAR202010120163","price":"1549","fe_sku":"NVGFT090_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB80808080.html","price":"719","fe_sku":"NVGFT080_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB60306030.html","price":"419","fe_sku":"NVGFT060T_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB88888888.html?offerId\u003dAR202105250080","price":"1199","fe_sku":"NVGFT080T_FR","locale":"FR"},{"is_active":"false","product_url":"https://www.ldlc.com/fiche/PB46678912.html","price":"619","fe_sku":"NVGFT070T_FR","locale":"FR"},{"is_activ* Connection #0 to host api.store.nvidia.com left intact<br />e":"false","product_url":"https://www.ldlc.com/fiche/PB45678912.html","price":"519","fe_sku":"NVGFT070_FR","locale":"FR"}]}<br />[/code]<br />[code]<br />:~# curl --user-agent "testing" -v 'https://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070&locale=FR'<br />* Trying 2a02:26f0:2b00:7::58dd:c607:443...<br />* Connected to api.store.nvidia.com (2a02:26f0:2b00:7::58dd:c607) port 443 (#0)<br />* ALPN, offering h2<br />* ALPN, offering http/1.1<br />* successfully set certificate verify locations:<br />* CAfile: /etc/ssl/certs/ca-certificates.crt<br />* CApath: /etc/ssl/certs<br />* TLSv1.3 (OUT), TLS handshake, Client hello (1):<br />* TLSv1.3 (IN), TLS handshake, Server hello (2):<br />* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):<br />* TLSv1.3 (IN), TLS handshake, Certificate (11):<br />* TLSv1.3 (IN), TLS handshake, CERT verify (15):<br />* TLSv1.3 (IN), TLS handshake, Finished (20):<br />* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):<br />* TLSv1.3 (OUT), TLS handshake, Finished (20):<br />* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384<br />* ALPN, server accepted to use h2<br />* Server certificate:<br />* subject: C=US; ST=California; L=Santa Clara; O=Nvidia Corporation; CN=it.nvidia.com<br />* start date: Jul 8 00:00:00 2021 GMT<br />* expire date: Jul 13 23:59:59 2022 GMT<br />* subjectAltName: host "api.store.nvidia.com" matched cert's "*.store.nvidia.com"<br />* issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA<br />* SSL certificate verify ok.<br />* Using HTTP2, server supports multi-use<br />* Connection state changed (HTTP/2 confirmed)<br />* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0<br />* Using Stream ID: 1 (easy handle 0x564934a7a270)<br />> GET /partner/v1/feinventory?skus=FR~NVGFT070&locale=FR HTTP/2<br />> Host: api.store.nvidia.com<br />> user-agent: testing<br />> accept: */*<br />><br />* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):<br />* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):<br />* old SSL session ID is stale, removing<br />* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!<br />< HTTP/2 403<br />< server: AkamaiGHost<br />< mime-version: 1.0<br />< content-type: text/html<br />< content-length: 308<br />< expires: Sat, 13 Nov 2021 22:15:13 GMT<br />< date: Sat, 13 Nov 2021 22:15:13 GMT<br /><<br /><html><head></head></html><br /><title>Access Denied</title><br /><body><br /><h2>Access Denied</h2><br /><br />You don't have permission to access "http://api.store.nvidia.com/partner/v1/feinventory?" on this server.<p><br />Reference #18.791dd58.1636841713.11ff60e2<br /></p></body><br /><br />* Connection #0 to host api.store.nvidia.com left intact<br />[/code]<br /><br />Cordialement, janus57
Oui mais il y a un access denied, si j'ai bien suivi il y a un timeout avec le script…
Et si l'user agent était problématique ça ne fonctionnerait pas en local…
Bonjour,
Et si l'user agent était problématique ça ne fonctionnerait pas en local…
je dit pas que le user-agent est un problème, mais bien qu'il y a un filtrage a un moment donné côté NVidia, et que si "tout passe" sauf le, programme en C#, c'est bien qu'il y a soit un problème au niveau du programme (mais si il tourne en local sur un Linux c'est peu probable) soit il y a un filtrage côté Nvidia (via aws/akamai) qui ne s’appliquerait pas à la connexion GP.
Le test simple : prendre un VPS ailleurs et faire le test depuis un autre prestataire.
Note : perso je reste bloqué sur le filtrage côté NVidia, car j'ai pas réussit à trouver de documentation sur cette API qui est appelé.
Cordialement, janus57
oui je suis aussi sur le filtrage côté nvidia.
Mais j'essaie de comprendre ce qui déclenche le blocage… Et honnêtement j'en ai pas la moindre idée…
Bonjour,
Mais j'essaie de comprendre ce qui déclenche le blocage… Et honnêtement j'en ai pas la moindre idée…
pour le coup faudrait demander à Nvidia vu que c'est leur API, par contre si cela n'est pas censé être une API "public" (par public j'entends que l'on peut utiliser avec une documentation fourni, comme chez OVH par exemple) c’est un poil plus complexe.
Cordialement, janus57
Non ce n'est pas une API public avec documentation, on la trouve en fouinant un peu sur la page de vente nvidia.
En tout cas merci pour votre temps, je vais tester avec un autre hébergeur si j'ai l'occasion, sinon je me dirigerai vers une solution Raspeberry pour monter un serveur maison.