Je veux passer tous les trafics Python via un serveur proxy http, j'ai vérifié urlib2 et demande des packages par exemple, ils peuvent être configurés pour utiliser des proxys mais comment pourrais-je utiliser quelque chose comme un proxy à l'échelle du système pour Python pour proxy toutes les données?
Système Linux exportez d'abord les variables d'environnement comme ceci
$ export http_proxy="http://<user>:<pass>@<proxy>:<port>"
$ export HTTP_PROXY="http://<user>:<pass>@<proxy>:<port>"
$ export https_proxy="http://<user>:<pass>@<proxy>:<port>"
$ export HTTPS_PROXY="http://<user>:<pass>@<proxy>:<port>"
ou dans le script que vous souhaitez passer par le proxy
import os
proxy = 'http://<user>:<pass>@<proxy>:<port>'
os.environ['http_proxy'] = proxy
os.environ['HTTP_PROXY'] = proxy
os.environ['https_proxy'] = proxy
os.environ['HTTPS_PROXY'] = proxy
#your code goes here.............
puis exécutez le script python
$ python my_script.py
[~ # ~] mise à jour [~ # ~]
Vous pouvez également utiliser redsocks avec cet outil, vous pouvez rediriger silencieusement toutes vos connexions TCP vers un proxy avec ou sans authentification. Mais vous devez faire attention car c'est pour toutes les connexions non seulement pour le python.
Systèmes Windows vous pouvez utiliser des outils comme freecap , proxifier , proxycap , et configurez-le pour qu'il s'exécute derrière l'exécutable python
Certes, ce n'est pas exactement ce que vous recherchez, mais si vous connaissez la source programmatique de tout votre trafic réseau dans votre code python, vous pouvez effectuer cet enveloppement proxy dans le code lui-même. Une solution python pure est suggérée en utilisant le module PySocks
dans le lien suivant:
https://github.com/httplib2/httplib2/issues/22
import httplib2
# detect presense of proxy and use env varibles if they exist
pi = httplib2.proxy_info_from_environment()
if pi:
import socks
socks.setdefaultproxy(pi.proxy_type, pi.proxy_Host, pi.proxy_port)
socks.wrapmodule(httplib2)
# now all calls through httplib2 should use the proxy settings
httplib2.Http()
Désormais, chaque appel effectué à l'aide de httplib2
utilisera ces paramètres de proxy. Vous devriez pouvoir envelopper n'importe quel module réseau qui utilise des sockets pour utiliser ce proxy.
https://github.com/Anorov/PySocks
Ils mentionnent que ce n'est pas recommandé, mais cela semble bien fonctionner pour moi.