C'est possible.
Proxy HTTP vers Socks5
Installer python-proxy
$ pip3 install pproxy
Exécuter
$ pproxy -l http://:8181 -r socks5://127.0.0.1:9150 -vv
Scrapy avec proxy HTTP
Créer un middleware (middlewares.py
)
class ProxyMiddleware(object):
def process_request(self, request, spider):
request.meta['proxy'] = "http://127.0.0.1:8181"
Attribuez-le à DOWNLOADER_MIDDLEWARES
(settings.py
)
DOWNLOADER_MIDDLEWARES = {
'PROJECT_NAME_HERE.middlewares.ProxyMiddleware': 350
}
Le middleware pourrait ressembler à :-
class ProxyMiddleware(object):
def process_request(self, request):
request.meta['proxy'] = "socks5://127.0.0.1:1080"
Rendez-le disponible dans votre fichier settings.py et voyez si cela fonctionne.
Vérifiez-le, si cela vous aide https://github.com/gregoriomomm/docker-multsocks...
Il fournit un moyen (aussi multiplateforme que Docker) de se connecter à un protocole standard HTTP PROXY pour accéder à un serveur SOCKS5 avec une configuration de route avancée, qui n'est pas facilement fournie par tous les logiciels gratuitement, comme dans Windows, que vous pouvez configurer un proxy HTTP simple en local (voir configuration en bas).
Il peut également être utilisé dans ce cas, pour de nombreuses applications, comme certaines anciennes implémentations Java qui peuvent se connecter à SOCKS mais ne sont pas activées pour transmettre correctement l'utilisateur et le mot de passe pour authentifier la connexion SOCKS, de sorte qu'il peut agir comme un SOCKS sans chaînage d'authentification à un authentifié.
Il est basé sur des commandes linux courantes et peut également être reproduit dans Windows 10, en utilisant les mêmes commandes sur un shell avec Windows Subsystem Linux (WSL).
Dans Ubuntu, vous pouvez simplement l'installer
sudo apt install tsocks nmap
# Once you have a tsocks installed and configured
echo "Starting http proxy!!!"
tsocks ncat -l --proxy-type http localhost 3128 &
Exemple du fichier /etc/tsocks.conf (remplacez les variables par "v" ) :
local = 9.0.0.0/255.0.0.0
local = 129.39.186.192/255.255.255.192
path {
reaches = 10.0.0.0/255.0.0.0
reaches = 158.98.181.232/255.255.255.248
reaches = 192.168.0.0/255.255.0.0
server = vSOCKS_HOST
server_port = vSOCKS_PORT
server_type = 5
default_user = vSOCKS_USERNAME
default_pass = vSOCKS_PASSWORD
fallback = yes
}
Si vous voulez essayer la version docker, changez simplement le chemin/tsocks.conf en votre version, cela chargera une route HTTP SOCKS et SOCKS5 non authentifiée vers votre serveur de destination finale SOCKS5 (et il y a d'autres options)
docker run -v path/tsocks.conf:/etc/tsocks.conf -p 3128:3128 -p 1080:1080 gregoriomomm/multsocks:latest
Dans https://github.com/gregoriomomm/tsocks avoir une version de tsocks (http://tsocks.sourceforge.net/) pour activer tsocks (bibliothèque de proxy transparente SOCKS5) avec un ajustement mineur pour fonctionner et compiler avec Alpine:3.11 et inclus la même option de secours d'Ubuntu.