在服务器布置了 ss, request 使用代理不走本地代理服务器应该怎么写? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
XxxxD
V2EX    Python

在服务器布置了 ss, request 使用代理不走本地代理服务器应该怎么写?

  •  
  •   XxxxD 2019-03-10 15:07:02 +08:00 2877 次点击
    这是一个创建于 2482 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看了 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 密码都没找到,搜了下好像只能添加密钥这样?

    41 条回复    2019-08-14 15:11:13 +08:00
    0yster
        1
    0yster  
       2019-03-10 19:38:39 +08:00 via iPhone
    同遇过这个问题,网上说最新的 requests 支持 socks5。但是我实测有问题,希望楼主解决了可以贴一下。
    Juszoe
        2
    Juszoe  
       2019-03-10 20:18:36 +08:00
    ss 应该只是用了 sock5,不代表用 sock5 能直接连上,还有一层 ss 协议(看了 ss 的描述,不是很肯定)
    可以服务器开个 sslocal 连上 ss,requests 连上 sock5://localhost:[sslocal 端口]
    arischow
        3
    arischow  
       2019-03-10 20:27:20 +08:00 via iPhone
    我记得是设环境变量 HTTP_PROXY
    ThirdFlame
        4
    ThirdFlame  
       2019-03-10 20:45:39 +08:00
    尤其 ss 客户端 生成的代理端口 也是 http 的。
    这个用 v2ray 来接入 $$ ,是可以生成 http 代理的。
    qf0129
        5
    qf0129  
       2019-03-10 20:50:34 +08:00 via iPhone
    用 proxychains 试下
    pengwen
        6
    pengwen  
       2019-03-10 22:03:26 +08:00 via Android
    你的 requests 不支持吧,试试这个
    pip install -U requests[socks]
    Acebiu
        7
    Acebiu  
       2019-03-10 22:05:23 +08:00
    想将 socks 转成 http 的话,你需要 polipo。
    wweir
        8
    wweir  
       2019-03-10 22:19:09 +08:00
    上 sower,智能全局代理,自动检测被屏蔽的站点,专业解决规则的烦恼
    github.com/wweir/sower
    Trim21
        9
    Trim21  
       2019-03-10 22:24:53 +08:00 via Android   1
    你不应该直接把 requests 当作一个 ss 客户端用,应该在本地开一个 ss 客户端连上服务器,然后用本地 ss 客户端暴露的那个代理地址。
    lovestudykid
        10
    lovestudykid  
       2019-03-10 22:25:57 +08:00 via iPhone
    ....这个问题难道不是开出来的代理端口并没有用户密码你不应该写吗?并且 socks5 和 http 都有提供的,并且端口相同
    Yourshell
        11
    Yourshell  
       2019-03-10 23:25:02 +08:00 via iPhone
    直接用 socks 的话那你 ss 客户端用来干嘛
    XxxxD
        12
    XxxxD  
    OP
       2019-03-11 08:25:02 +08:00
    @pengwen 谢谢,我是安装了这个的
    XxxxD
        13
    XxxxD  
    OP
       2019-03-11 08:26:48 +08:00
    @Acebiu 不是转 http, 只是想脚本直接连接服务器的布置的代理,不走本地端口
    XxxxD
        14
    XxxxD  
    OP
       2019-03-11 08:29:44 +08:00
    @Trim21 谢谢,我是一个脚本已经走了本地了,又在另外服务器布置了一个,需要脚本不走本地,因为走本地只有一个
    XxxxD
        15
    XxxxD  
    OP
       2019-03-11 08:30:37 +08:00
    @lovestudykid 谢谢,不设定用户名和密码我 http 和 socks5 都试过,连不了
    Trim21
        16
    Trim21  
       2019-03-11 08:46:37 +08:00 via Android
    @XxxxD 那你应该在另外的这台机子上再跑一个 ss 客户端…
    9527tech
        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'
    }

    这样应该就行
    ik
        18
    ik  
       2019-03-11 09:03:45 +08:00 via iPhone
    curl --socks xxx 先试试?
    XxxxD
        19
    XxxxD  
    OP
       2019-03-11 09:09:35 +08:00
    @Juszoe 你好,你这样也是走本地端口么?我是想脚本不走本地端口,直接走代理
    XxxxD
        20
    XxxxD  
    OP
       2019-03-11 09:10:50 +08:00
    @Trim21 我就是想把远程的 ss 布置成代理然后我就可以不用买代理了这样,没多的电脑可以使用,orz
    XxxxD
        21
    XxxxD  
    OP
       2019-03-11 09:11:09 +08:00
    @9527tech 谢谢,我就是不想走本地的,因为已经有个脚本走了本地了
    XxxxD
        22
    XxxxD  
    OP
       2019-03-11 09:12:13 +08:00
    @arischow 问题是代理都连不上,设环境变量是不是有点过早了
    Juszoe
        23
    Juszoe  
       2019-03-11 09:14:50 +08:00
    @XxxxD #19 这是最简便的办法,想脚本直接走的话只能把 ss 的 python api 拉过来,写在代码里面,我看你 14 楼说的,其实 ss 客户端本地端口可以允许多个连接的
    XxxxD
        24
    XxxxD  
    OP
       2019-03-11 09:39:37 +08:00
    @Juszoe 你好,你说的的多个连接是切换到另外一个代理么? 但是实际上我是不知了两个服务器的代理,一个本地走着,还有一个想脚本直接连,你说的是怎么多个连接呢?
    yzc27
        25
    yzc27  
       2019-03-11 09:50:52 +08:00 via iPhone
    程服器架完 ss 服端,再同在台服器架 ss 客端,公 socks 代理端口(似乎密),你自己 requests 那端口就好啦(拍袋想出,)
    Juszoe
        26
    Juszoe  
       2019-03-11 09:52:47 +08:00
    @XxxxD #24 我略微有些混乱了,方便的话麻烦画个图,描述一下几台服务器(机器),分别部署了什么
    XxxxD
        27
    XxxxD  
    OP
       2019-03-11 10:06:36 +08:00
    @ik 谢谢,我试了下, 的确是代理的问题,我用本地代理访问 httpbin.org/ip 显示的是代理的 ip, 奇怪的是我在 google cloud vm 实例布置的 ss 没显示啥问题啊,google could vm 还需要另外设置啥么, 我防火墙 http/https 也都开的啊
    rocketman13
        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'
    }
    zephyru
        29
    zephyru  
       2019-03-11 11:30:27 +08:00
    歪个楼...我上次在阿里云上暴露不加验证的 SS 端口后被封了...
    涉嫌提供访问境外非法信息的途径...
    一路看下来..感觉有点乱..不太清楚为啥不通过客户端连接而是直接用 requests 连...
    XxxxD
        30
    XxxxD  
    OP
       2019-03-11 11:58:32 +08:00
    @zephyru 因为我想自己弄多个代理 ip 弄爬虫,本地已经走了一个了
    XxxxD
        31
    XxxxD  
    OP
       2019-03-11 11:59:37 +08:00
    @rocketman13 谢谢,有安装下载,就是这样使用,ss 是没有用户的,我使用 root:ssPassword@host:port 无解,难道 user:pass 是服务器的?
    XxxxD
        32
    XxxxD  
    OP
       2019-03-11 12:01:00 +08:00
    @Juszoe 就是两个服务器,我都部署了 ss, 然后一台电脑,本地客户端走了一个,我想脚本直接走另外一个代理,不走本地端口这样,就是奇怪那种用来卖的 ip 是咋布置的
    RainyH2O
        33
    RainyH2O  
       2019-03-11 13:28:18 +08:00
    你是打算自己实现一个 ss 客户端,自己实现 ss 的加密?
    ss 是 cs 架构的软件,不走 client 的话你得自己写 client 的逻辑
    那么问题来了你干嘛不用已经写好的 sslocal ?
    ss!=socks proxy
    radc
        34
    radc  
       2019-03-11 13:48:32 +08:00
    socks 是 sslocal 暴露出来的那个端口,ssserver 提供的端口是供 sslocal 来传送加密数据的啊,那个不是 socks...
    所以想在 requests 里用 socks 代理,必须起一个 sslocal
    XxxxD
        35
    XxxxD  
    OP
       2019-03-11 13:49:16 +08:00
    @RainyH2O orz, 好的,谢谢,一语惊醒梦中人,我就是爬虫需要多个 ip, 买了几个之后感觉又贵又不怎么稳,然后就打起了服务器自建代理的主意,我得再研究研究怎么服务器自建代理
    XxxxD
        36
    XxxxD  
    OP
       2019-03-11 13:51:43 +08:00
    @radc
    好的,谢谢,楼上已经把我拍醒了,我应该研究如何服务器自建代理而不是让 ss 变成脚本可用代理。
    话说,妹纸头像好亲切。
    orz
    XxxxD
        37
    XxxxD  
    OP
       2019-03-11 13:52:27 +08:00
    @0yster 童鞋,看#33 楼和#34 楼,ss 不等于可用 socks 代理,得换个路
    zephyru
        38
    zephyru  
       2019-03-11 14:21:36 +08:00
    实际上 sslocal 暴露出来的端口的确可以用 requests 连但是没法直接加认证...
    如果用的国内的云最好不要直接暴露....
    看你的需求..如果只有两个,本地起两个客户端分别代到不同的端口上不就好了...
    只是感觉这么弄又笨又麻烦..
    话说只是想用服务器做代理转发似乎也不是一定要用 ss 来做吧...如果这块有找到好用的东西能顺便告诉我一下就好了..
    anxudong
        39
    anxudong  
       2019-05-13 01:25:48 +08:00
    您好,我也遇到了这个问题,应该怎么写呢
    anxudong
        40
    anxudong  
       2019-05-13 01:27:18 +08:00
    用户名默认是 root?配置文件中只有密码
    XxxxD
        41
    XxxxD  
    OP
       2019-08-14 15:11:13 +08:00
    @anxudong 看 33 和 34 楼
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5630 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 02:09 PVG 10:09 LAX 18:09 JFK 21:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86