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
xinali
V2EX  ›  Python

python 可以伪造 ip 发送 http 请求吗?

  •  
  •   xinali · 2016-07-29 17:19:03 +08:00 · 17781 次点击
    这是一个创建于 3040 天前的主题,其中的信息可能已经有所发展或是发生改变。
    32 条回复    2018-02-21 19:33:15 +08:00
    holyghost
        1
    holyghost  
       2016-07-29 17:26:18 +08:00
    我们不提倡做坏事
    paw
        2
    paw  
       2016-07-29 17:30:39 +08:00
    伪造 IP 3 次握手都完不成..... 除非你能控制路由让你伪造的 IP 包转到你伪造源机器上去
    3dwelcome
        3
    3dwelcome  
       2016-07-29 17:37:44 +08:00 via Android
    找个代理发请求、 ip 包你修改了、那路由就没办法发送数据了。
    naomhan
        4
    naomhan  
       2016-07-29 17:53:31 +08:00
    requests.get(url, proxies={"http":"ip:port"})
    naomhan
        5
    naomhan  
       2016-07-29 17:54:18 +08:00
    不对 这叫代理了
    ovear
        6
    ovear  
       2016-07-29 17:55:36 +08:00
    X-REAL-IP
    tabris17
        7
    tabris17  
       2016-07-29 17:56:34 +08:00   ❤️ 1
    概率上有可能实现
    hard2reg
        8
    hard2reg  
       2016-07-29 18:20:02 +08:00
    我们不提倡做坏事
    ysc3839
        9
    ysc3839  
       2016-07-29 18:37:13 +08:00 via Android
    伪造 IP 的话数据都发到伪造的 IP 上了, 3 次握手不能完成,更不可能发送 HTTP 请求
    felixzhu
        10
    felixzhu  
       2016-07-29 18:40:01 +08:00
    不能伪造,一般都是找代理服务
    iyangyuan
        11
    iyangyuan  
       2016-07-29 19:09:42 +08:00 via iPhone
    伪命题
    autocar23
        12
    autocar23  
       2016-07-29 19:19:43 +08:00   ❤️ 6
    zythum
        13
    zythum  
       2016-07-29 19:51:05 +08:00
    伪造 ip 你就接不到包了.... 没发建立链路的。
    loalj
        14
    loalj  
       2016-07-29 20:11:05 +08:00   ❤️ 1
    有些 web 服务器校验客户端的真实 ip 是直接从 http headers 里边读,可以伪造 x-forward-for, x-real-ip 来欺骗 web 服务器,但是大部分都没办法通过这种办法来伪造。
    hxndg
        15
    hxndg  
       2016-07-29 20:16:00 +08:00
    表示我原先也想过这个问题
    wweir
        16
    wweir  
       2016-07-29 21:47:10 +08:00 via iPhone
    可以考虑 sip 不过这个跟 Python 没啥关系
    zaishanfeng
        17
    zaishanfeng  
       2016-07-29 21:51:04 +08:00 via Android
    这怎么可能 要是可以伪造岂不是乱套了
    msg7086
        18
    msg7086  
       2016-07-29 23:10:07 +08:00
    可以伪造,但是你怎么收包?
    cmaster
        19
    cmaster  
       2016-07-29 23:23:39 +08:00
    人家说不定是想 DDoS 呢?
    aeshfawre
        20
    aeshfawre  
       2016-07-29 23:32:21 +08:00
    据说不接收数据就可以,只发出去
    gefranks
        21
    gefranks  
       2016-07-29 23:47:35 +08:00
    这种伪造的包很有可能被一些路由直接丢弃,因为包的源不认识,这些包也不会被路由
    redsonic
        22
    redsonic  
       2016-07-30 00:23:08 +08:00   ❤️ 1
    撇开 TCP 三次握手,很早之前的 BGP 接入都可以伪源 ip 发包,后来 DDos 多了,运营商都按照 BCP38 来过滤源了。
    3dwelcome
        23
    3dwelcome  
       2016-07-30 00:51:07 +08:00 via Android
    三次握手、在第二个阶段模拟服务器返回伪造 ip 包和地址是完全可行的。但我没试过第三次客户端伪造源地址后、能否建立连接。

    也许可行、但这样就属于普通的 ddos 把服务器资源耗完的范畴、并不能传送数据。
    Mark3K
        24
    Mark3K  
       2016-07-30 01:08:50 +08:00
    scapy
    xieyudi1990
        25
    xieyudi1990  
       2016-07-30 03:41:40 +08:00
    如果说是 ip 包头那种,用 raw socket 试一下就好。不过我没试过,我估计 isp 没那么傻。
    如果是 http 里那个 x-forward-for ,我试过。 cnbeta 可以用这个刷票。
    infun
        26
    infun  
       2016-07-30 07:43:26 +08:00 via Android
    以前某文献库是读 headers 的,然后 h 就嘿嘿嘿
    qingchn
        27
    qingchn  
       2016-07-30 11:39:39 +08:00
    伪造 IP 有点难度,变通一下,使用代理。
    em70
        28
    em70  
       2016-07-30 11:56:32 +08:00
    如果能伪造 IP,哪些卖肉鸡卖代理的不就饿死了,存在即是合理
    jackyspy
        29
    jackyspy  
       2016-07-30 12:24:58 +08:00
    scapy ,想怎么玩就怎么玩
    jackyspy
        30
    jackyspy  
       2016-07-30 12:26:50 +08:00
    刚看错问题了。 tcp 无法伪造 ip ,除非你在某个核心网节点上。
    可以通过代理访问 http 达到你要的效果。
    pyufftj
        31
    pyufftj  
       2017-12-27 15:58:20 +08:00
    @jackyspy 那局域网中可以吗。
    zlun26981
        32
    zlun26981  
       2018-02-21 19:33:15 +08:00
    假设你是想在本地一台主机伪造多个 IP,然后通过 http 访问互联网一台服务器,让服务器觉得是有多台不同主机 /IP 来访问它。这个需求就有点 DDoS 的味道了。

    在网络层面你需要考虑三个问题:
    1.伪造完 IP,假设伪造 IP 与网关不在同一网段,这个数据包怎么送到出口路由器?
    2.就算数据已经送到出口路由器,出口路由器会将源 IP 做地址转换( NAT ),再送出互联网,那么这个数据包送到目标服务器,其源 IP 还是一个。
    3.无法完成 TCP 三次握手,你用伪造源 IP 给目标服务器发送 TCP_SYN,目标服务器给你所伪造的源 IP 对应的真实主机回 TCP_SYN-ACK,真实主机莫名其妙收到这个 SYN-ACK 是不会回复 TCP_ACK 的。

    我个人还是比较认同楼上有人提出使用代理的方案。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:07 · PVG 04:07 · LAX 12:07 · JFK 15:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.