Condividi tramite


Gli script Python che effettuano richieste di Microsoft Graph vengono rilevati come crawler Web

Questo articolo fornisce soluzioni a un problema a causa del quale gli script Python potrebbero essere rilevati come crawler Web durante l'esecuzione di richieste di Microsoft Graph.

Sintomi

Uno script Python che effettua una richiesta di Microsoft Graph potrebbe talvolta essere rilevato dal gateway come crawler Web. Se gli script Python usano un gestore pool, viene restituito il messaggio di errore seguente quando si blocca la richiesta:

{'error': {'code': 'UnknownError', 'message': '\r\n403 Forbidden\r\n\r\n
403 Forbidden
\r\n
Microsoft-Azure-Application-Gateway/v2
\r\n\r\n\r\n', 'innerError': {'date': '{UTC Date/Time}', 'request-id': '{guid}', 'client-request-id': '{guid}'}}}

Motivo

Il problema si verifica perché alcuni script Python potrebbero non strutturare le richieste in modo conforme ai modelli previsti. Di conseguenza, il gateway identifica erroneamente le richieste provenienti da un crawler Web.

Soluzione

Per risolvere questo problema, usare Microsoft Graph SDK per Python. Se non si vuole usarlo, strutturare le richieste in modo analogo al modo in cui l'SDK li gestisce usando l'oggetto Session Python per inviare richieste.

Ecco un esempio di come è possibile strutturare manualmente le richieste:

from requests import Request, Session

def example_request(url):
    http = Session()
    req = Request('GET', url, headers=h)
    prepped = req.prepare()
    resp = http.send(prepped)
    return resp.json()

Annotazioni

  • La User-Agent stringa nell'intestazione della richiesta HTTP deve essere univoca per l'applicazione o lo script, differenziandolo dal traffico generico.
  • L'inclusione di intestazioni aggiuntive, Accept: application/json ad esempio, può aiutare a chiarire la finalità della richiesta.
  • Il traffico identificato erroneamente come traffico crawler potrebbe comportare limitazioni di accesso o altre mitigazioni automatizzate da parte dei sistemi back-end di Microsoft. L'identificazione corretta del client consente di evitare questi problemi.

Se si usa un client HTTP diverso, assicurarsi che le intestazioni simili siano impostate in modo appropriato. Fare riferimento alla documentazione del client HTTP per personalizzare le intestazioni delle richieste.

Maggiori informazioni

Per altre indicazioni sulle procedure consigliate quando si usa Microsoft Graph, vedere gli articoli seguenti:

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.