推荐学习书目
› 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 · Mar 10, 2019 · 3632 views
    This topic created in 2795 days ago, the information mentioned may be changed or developed.

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

    这样应该就行
    ik
    ik
    Mar 11, 2019 via iPhone
    18
    curl --socks xxx 先试试?
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    19
    @Juszoe 你好,你这样也是走本地端口么?我是想脚本不走本地端口,直接走代理
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    20
    @Trim21 我就是想把远程的 ss 布置成代理然后我就可以不用买代理了这样,没多的电脑可以使用,orz
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    21
    @9527tech 谢谢,我就是不想走本地的,因为已经有个脚本走了本地了
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    22
    @arischow 问题是代理都连不上,设环境变量是不是有点过早了
    Juszoe
    Juszoe
    Mar 11, 2019
    23
    @XxxxD #19 这是最简便的办法,想脚本直接走的话只能把 ss 的 python api 拉过来,写在代码里面,我看你 14 楼说的,其实 ss 客户端本地端口可以允许多个连接的
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    24
    @Juszoe 你好,你说的的多个连接是切换到另外一个代理么? 但是实际上我是不知了两个服务器的代理,一个本地走着,还有一个想脚本直接连,你说的是怎么多个连接呢?
    yzc27
    yzc27
    Mar 11, 2019 via iPhone
    25
    遠程服務器架完 ss 服務端,再同時在台服務器架個 ss 客戶端,並對公網開個 socks 代理端口(似乎無密碼驗證),你自己電腦 requests 連那個端口就好啦(純拍腦袋想出來,沒驗證過)
    Juszoe
    Juszoe
    Mar 11, 2019
    26
    @XxxxD #24 我略微有些混乱了,方便的话麻烦画个图,描述一下几台服务器(机器),分别部署了什么
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    27
    @ik 谢谢,我试了下, 的确是代理的问题,我用本地代理访问 httpbin.org/ip 显示的是代理的 ip, 奇怪的是我在 google cloud vm 实例布置的 ss 没显示啥问题啊,google could vm 还需要另外设置啥么, 我防火墙 http/https 也都开的啊
    rocketman13
    rocketman13
    Mar 11, 2019
    28
    除了基本的 HTTP 代理,Request 还支持 SOCKS 协议的代理。这是一个可选功能,若要使用, 你需要安装第三方库。

    你可以用 pip 获取依赖:

    $ pip install requests[socks]
    安装好依赖以后,使用 SOCKS 代理和使用 HTTP 代理一样简单:

    proxies = {
    'http': 'socks5://user:pass@host:port',
    'https': 'socks5://user:pass@host:port'
    }
    zephyru
    zephyru
    Mar 11, 2019
    29
    歪个楼...我上次在阿里云上暴露不加验证的 SS 端口后被封了...
    涉嫌提供访问境外非法信息的途径...
    一路看下来..感觉有点乱..不太清楚为啥不通过客户端连接而是直接用 requests 连...
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    30
    @zephyru 因为我想自己弄多个代理 ip 弄爬虫,本地已经走了一个了
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    31
    @rocketman13 谢谢,有安装下载,就是这样使用,ss 是没有用户的,我使用 root:ssPassword@host:port 无解,难道 user:pass 是服务器的?
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    32
    @Juszoe 就是两个服务器,我都部署了 ss, 然后一台电脑,本地客户端走了一个,我想脚本直接走另外一个代理,不走本地端口这样,就是奇怪那种用来卖的 ip 是咋布置的
    RainyH2O
    RainyH2O
    Mar 11, 2019
    33
    你是打算自己实现一个 ss 客户端,自己实现 ss 的加密?
    ss 是 cs 架构的软件,不走 client 的话你得自己写 client 的逻辑
    那么问题来了你干嘛不用已经写好的 sslocal ?
    ss!=socks proxy
    radc
    radc
    Mar 11, 2019
    34
    socks 是 sslocal 暴露出来的那个端口,ssserver 提供的端口是供 sslocal 来传送加密数据的啊,那个不是 socks...
    所以想在 requests 里用 socks 代理,必须起一个 sslocal
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    35
    @RainyH2O orz, 好的,谢谢,一语惊醒梦中人,我就是爬虫需要多个 ip, 买了几个之后感觉又贵又不怎么稳,然后就打起了服务器自建代理的主意,我得再研究研究怎么服务器自建代理
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    36
    @radc
    好的,谢谢,楼上已经把我拍醒了,我应该研究如何服务器自建代理而不是让 ss 变成脚本可用代理。
    话说,妹纸头像好亲切。
    orz
    XxxxD
    XxxxD
    OP
    Mar 11, 2019
    37
    @0yster 童鞋,看#33 楼和#34 楼,ss 不等于可用 socks 代理,得换个路
    zephyru
    zephyru
    Mar 11, 2019
    38
    实际上 sslocal 暴露出来的端口的确可以用 requests 连但是没法直接加认证...
    如果用的国内的云最好不要直接暴露....
    看你的需求..如果只有两个,本地起两个客户端分别代到不同的端口上不就好了...
    只是感觉这么弄又笨又麻烦..
    话说只是想用服务器做代理转发似乎也不是一定要用 ss 来做吧...如果这块有找到好用的东西能顺便告诉我一下就好了..
    anxudong
    anxudong
    May 13, 2019
    39
    您好,我也遇到了这个问题,应该怎么写呢
    anxudong
    anxudong
    May 13, 2019
    40
    用户名默认是 root?配置文件中只有密码
    XxxxD
    XxxxD
    OP
    Aug 14, 2019
    41
    @anxudong 看 33 和 34 楼
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2367 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 15:27 · PVG 23:27 · LAX 07:27 · JFK 10:27
    ♥ Do have faith in what you're doing.