ssrf_proxy.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """
  2. Proxy requests to avoid SSRF
  3. """
  4. import os
  5. import httpx
  6. SSRF_PROXY_ALL_URL = os.getenv('SSRF_PROXY_ALL_URL', '')
  7. SSRF_PROXY_HTTP_URL = os.getenv('SSRF_PROXY_HTTP_URL', '')
  8. SSRF_PROXY_HTTPS_URL = os.getenv('SSRF_PROXY_HTTPS_URL', '')
  9. proxies = {
  10. 'http://': SSRF_PROXY_HTTP_URL,
  11. 'https://': SSRF_PROXY_HTTPS_URL
  12. } if SSRF_PROXY_HTTP_URL and SSRF_PROXY_HTTPS_URL else None
  13. def make_request(method, url, **kwargs):
  14. if SSRF_PROXY_ALL_URL:
  15. return httpx.request(method=method, url=url, proxy=SSRF_PROXY_ALL_URL, **kwargs)
  16. elif proxies:
  17. return httpx.request(method=method, url=url, proxies=proxies, **kwargs)
  18. else:
  19. return httpx.request(method=method, url=url, **kwargs)
  20. def get(url, **kwargs):
  21. return make_request('GET', url, **kwargs)
  22. def post(url, **kwargs):
  23. return make_request('POST', url, **kwargs)
  24. def put(url, **kwargs):
  25. return make_request('PUT', url, **kwargs)
  26. def patch(url, **kwargs):
  27. return make_request('PATCH', url, **kwargs)
  28. def delete(url, **kwargs):
  29. return make_request('DELETE', url, **kwargs)
  30. def head(url, **kwargs):
  31. return make_request('HEAD', url, **kwargs)