看了 requests 的文档,http 和 socks, ss 应该属于 socks
proxies = {
'http': 'socks5://user:pass@host:port',
'https': 'socks5://user:pass@host:port'
}
user 我用的 root:用的 ss 的密码 @host:port 失败 请教下应该怎么写,另外用的 google cloud VM 实例, 我竟然连 ssh 密码都没找到,搜了下好像只能添加密钥这样?
1
0yster 2019-03-10 19:38:39 +08:00 via iPhone
同遇过这个问题,网上说最新的 requests 支持 socks5。但是我实测有问题,希望楼主解决了可以贴一下。
|
2
Juszoe 2019-03-10 20:18:36 +08:00
ss 应该只是用了 sock5,不代表用 sock5 能直接连上,还有一层 ss 协议(看了 ss 的描述,不是很肯定)
可以服务器开个 sslocal 连上 ss,requests 连上 sock5://localhost:[sslocal 端口] |
3
arischow 2019-03-10 20:27:20 +08:00 via iPhone
我记得是设环境变量 HTTP_PROXY
|
4
ThirdFlame 2019-03-10 20:45:39 +08:00
尤其 ss 客户端 生成的代理端口 也是 http 的。
这个用 v2ray 来接入 $$ ,是可以生成 http 代理的。 |
5
qf0129 2019-03-10 20:50:34 +08:00 via iPhone
用 proxychains 试下
|
6
pengwen 2019-03-10 22:03:26 +08:00 via Android
你的 requests 不支持吧,试试这个
pip install -U requests[socks] |
7
Acebiu 2019-03-10 22:05:23 +08:00
想将 socks 转成 http 的话,你需要 polipo。
|
8
wweir 2019-03-10 22:19:09 +08:00
上 sower,智能全局代理,自动检测被屏蔽的站点,专业解决规则的烦恼
github.com/wweir/sower |
9
Trim21 2019-03-10 22:24:53 +08:00 via Android 1
你不应该直接把 requests 当作一个 ss 客户端用,应该在本地开一个 ss 客户端连上服务器,然后用本地 ss 客户端暴露的那个代理地址。
|
10
lovestudykid 2019-03-10 22:25:57 +08:00 via iPhone
....这个问题难道不是开出来的代理端口并没有用户密码你不应该写吗?并且 socks5 和 http 都有提供的,并且端口相同
|
11
Yourshell 2019-03-10 23:25:02 +08:00 via iPhone
直接用 socks 的话那你 ss 客户端用来干嘛
|
15
XxxxD OP @lovestudykid 谢谢,不设定用户名和密码我 http 和 socks5 都试过,连不了
|
17
9527tech 2019-03-11 08:48:13 +08:00 via iPhone
proxies = {
'http': 'socks5://127.0.0.1:1080' 'https': 'socks5://127.0.0.1:1080' } 这样应该就行 |
18
ik 2019-03-11 09:03:45 +08:00 via iPhone
curl --socks xxx 先试试?
|
23
Juszoe 2019-03-11 09:14:50 +08:00
@XxxxD #19 这是最简便的办法,想脚本直接走的话只能把 ss 的 python api 拉过来,写在代码里面,我看你 14 楼说的,其实 ss 客户端本地端口可以允许多个连接的
|
24
XxxxD OP @Juszoe 你好,你说的的多个连接是切换到另外一个代理么? 但是实际上我是不知了两个服务器的代理,一个本地走着,还有一个想脚本直接连,你说的是怎么多个连接呢?
|
25
yzc27 2019-03-11 09:50:52 +08:00 via iPhone
遠程服務器架完 ss 服務端,再同時在台服務器架個 ss 客戶端,並對公網開個 socks 代理端口(似乎無密碼驗證),你自己電腦 requests 連那個端口就好啦(純拍腦袋想出來,沒驗證過)
|
27
XxxxD OP @ik 谢谢,我试了下, 的确是代理的问题,我用本地代理访问 httpbin.org/ip 显示的是代理的 ip, 奇怪的是我在 google cloud vm 实例布置的 ss 没显示啥问题啊,google could vm 还需要另外设置啥么, 我防火墙 http/https 也都开的啊
|
28
rocketman13 2019-03-11 11:03:48 +08:00
除了基本的 HTTP 代理,Request 还支持 SOCKS 协议的代理。这是一个可选功能,若要使用, 你需要安装第三方库。
你可以用 pip 获取依赖: $ pip install requests[socks] 安装好依赖以后,使用 SOCKS 代理和使用 HTTP 代理一样简单: proxies = { 'http': 'socks5://user:pass@host:port', 'https': 'socks5://user:pass@host:port' } |
29
zephyru 2019-03-11 11:30:27 +08:00
歪个楼...我上次在阿里云上暴露不加验证的 SS 端口后被封了...
涉嫌提供访问境外非法信息的途径... 一路看下来..感觉有点乱..不太清楚为啥不通过客户端连接而是直接用 requests 连... |
31
XxxxD OP @rocketman13 谢谢,有安装下载,就是这样使用,ss 是没有用户的,我使用 root:ssPassword@host:port 无解,难道 user:pass 是服务器的?
|
32
XxxxD OP @Juszoe 就是两个服务器,我都部署了 ss, 然后一台电脑,本地客户端走了一个,我想脚本直接走另外一个代理,不走本地端口这样,就是奇怪那种用来卖的 ip 是咋布置的
|
33
RainyH2O 2019-03-11 13:28:18 +08:00
你是打算自己实现一个 ss 客户端,自己实现 ss 的加密?
ss 是 cs 架构的软件,不走 client 的话你得自己写 client 的逻辑 那么问题来了你干嘛不用已经写好的 sslocal ? ss!=socks proxy |
34
radc 2019-03-11 13:48:32 +08:00
socks 是 sslocal 暴露出来的那个端口,ssserver 提供的端口是供 sslocal 来传送加密数据的啊,那个不是 socks...
所以想在 requests 里用 socks 代理,必须起一个 sslocal |
35
XxxxD OP @RainyH2O orz, 好的,谢谢,一语惊醒梦中人,我就是爬虫需要多个 ip, 买了几个之后感觉又贵又不怎么稳,然后就打起了服务器自建代理的主意,我得再研究研究怎么服务器自建代理
|
36
XxxxD OP |
38
zephyru 2019-03-11 14:21:36 +08:00
实际上 sslocal 暴露出来的端口的确可以用 requests 连但是没法直接加认证...
如果用的国内的云最好不要直接暴露.... 看你的需求..如果只有两个,本地起两个客户端分别代到不同的端口上不就好了... 只是感觉这么弄又笨又麻烦.. 话说只是想用服务器做代理转发似乎也不是一定要用 ss 来做吧...如果这块有找到好用的东西能顺便告诉我一下就好了.. |
39
anxudong 2019-05-13 01:25:48 +08:00
您好,我也遇到了这个问题,应该怎么写呢
|
40
anxudong 2019-05-13 01:27:18 +08:00
用户名默认是 root?配置文件中只有密码
|