Sometimes, a python script that is making Microsoft Graph requests may be detected by the gateway as a web-crawler if you are using a pool manager and block the request. The error will look similar to this:
{‘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}’}}}
To overcome this issue the easiest way is to use the MS Graph SDK for python but if you’re not using that, then you should structure your requests in a similar fashion to the MS Graph SDK for Python which is using a session to make the requests. For example:
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()