推荐学习书目
› 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
keyword233
V2EX  ›  Python

关于 Python requests 库自定义 Host 的问题。

  •  
  •   keyword233 · May 16, 2021 · 3780 views
    This topic created in 1960 days ago, the information mentioned may be changed or developed.

    如图,似乎设置的 Host 并没有生效,想问问各位大佬问题出在哪里?

    6 replies  •  2021-05-17 08:51:00 +08:00
    ch2
        1
    ch2  
       May 16, 2021
    host 是由你的 url 决定的,你自己覆盖无效
    chenyu0x00
        2
    chenyu0x00  
       May 17, 2021
    @ch2 我测试没有问题,可以使用 headers 覆盖 Host
    chenyu0x00
        3
    chenyu0x00  
       May 17, 2021
    我把 IP 地址换成 182.61.200.7,楼主的代码就能正常访问了。
    chenyu0x00
        4
    chenyu0x00  
       May 17, 2021
    我好像不能放图,代码基本上是这样的:

    ```
    r = requests.get('http://182.61.200.7', headers={'Host': 'www.baidu.com'})
    r.encoding = 'utf-8'
    print(r.text)
    ```

    我用 wireshark 抓包,发送的 HTTP 请求中的 Host 字段被正确修改为了 www.baidu.com 。
    我的测试环境是 Ubuntu,Python 3.6.9 。
    LeeReamond
        5
    LeeReamond  
       May 17, 2021
    同,win 平台测试下返回值是正常的百度首页。不过原理上来说,如果你期望以指定 IP 来获得不同的路由,那么封包和直接发送肯定有某种区别,记得以前看过一些引擎开发的说法是(在讨论 host 序列化攻击时),引擎要识别目标访问的 host 实际是一件困难的事,意指其不可靠性,所以如果对方没有按照你期望的方法识别,不识别也是正常的。我手头没有抓包工具,具体封包区别还请楼上老哥解惑了
    keyword233
        6
    keyword233  
    OP
       May 17, 2021   ❤️ 1
    谢谢各位,同样的代码换了台电脑解决了,似乎只有这台电脑遇到了这个问题 :(

    @ch2 在其他设备上测试过,这是的确是有效的。

    @chenyu0x00 谢谢实践!这俩都是百度的 ip,应该没有区别;问题主要在于 Host 字段不能正确被重写。(但是 headers 指定的其它参数又是正常的,有点迷)

    @LeeReamond 虽然没有明白你在说什么...不过还是谢谢了!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   800 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:55 · PVG 04:55 · LAX 13:55 · JFK 16:55
    ♥ Do have faith in what you're doing.