Python >> Tutoriel Python >  >> Python Tag >> Requests

Comment proxy requêtes scrapy avec Socks5 ?

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.