selenium如何为chrome使用带验证的socks5代理?

咱们开门见山,其实很简单,如果服务器的socks5代理需要验证的话,我们不直接使用服务器的socks5代理,我们中间加一层转发,让转发这个中间件支持socks5验证不就行了,而且我们的程序还要能够控制这个中间件。

思路捋清楚了,那么接下来的问题就是咱们如何实现socks5代理的转发中间件。当然我们没有必要亲自去重新实现socks5协议,市面上已经有对应的实现,我们只需要有发现的眼睛。小码哥使用python这一个库:pproxy,安装使用方式挺简单的:

大家可以直接进入github地址:https://github.com/qwj/python-proxy查看使用文档,pproxy的功能也挺多,它也可以当作独立的socks5代理服务器使用,而且是纯python实现,不需要安装很麻烦的依赖。  我就介绍ppproxy主要使用的两种方式:

直接启动:

pproxy -l socks5://host:port#username:password -vv

以上的host,port分别为主机ip和端口,host可以为空,那样表示socks5服务监听主机的所有的地址
username和password就是socks5服务器的账号和密码。

dockers方式启动:

docker run -it -p 8080:8080 mosajjal/pproxy:latest -l socks5://:8080#username:password -vv

以上默认主机和docker映射端口为8080,读者可以自己定,账号和密码也自己替换,另外也可以看到主机ip我们设置的为空

pproxy -l socks5://127.0.0.1:8080 -r socks5://host:port#username:password -vv

以上命令很简单 -l代表监听listen,-r代表转发relay,那么意思很明确,我们监听本地的8080端口提供无验证的socks5服务,将收到的数据包转发给host:port所指的需要验证的socks5服务。

4、集成

我们可以用python以启动子进程的方式,在selenium启动chrome之前启动pproxy作为转发中间件,然后把启动的chrome的代理设置为本地的socks5转发中间件,当然你也可以直接在代码里集成pproxy,因为都是python系的也比较方便。然后小码哥因为项目需要是用c#集成的pproxy,更麻烦,不过是相通的。我说说c#集成的思路:

  • 将pproxy用pyinstaller打包成pproxy.exe

  • 利用c#启动子进程的方式启动并控制pproxy.exe的生命周期

5、 结束语

ok,这期的文章咱们先到这里了,读者有任何疑问可以联系我,加入群交流,也可以在后台留言,我看到了会回复。