V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ZGLHHH
V2EX  ›  分享创造

使用 Nginx+UWSGI 对 Twitter 媒体资源进行反代

  •  
  •   ZGLHHH · 2016-06-10 00:43:14 +08:00 · 2931 次点击
    这是一个创建于 3095 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本项目用于解决 pbs.twimg.com 在国内被屏蔽的问题。

    本项目基于 tiangolo/uwsgi-nginx-dockerYUX-IO/uwsgi-nginx-flask-docker-for-sinaimg ,对此表示感谢!


    项目仓库:

    Github :HuanMeng0/uwsgi-nginx-flask-docker-for-twimg

    DockerHub(如果 Github 上的仓库内容有更新,会自动进行构建更新 images):huanmeng/uwsgi-nginx-flask-docker-for-twimg


    用法

    https://pbs.twimg.com/media/CkfhtlvWYAIgdMb.jpg:orig(此处 orig 表示让服务器返回原图)

    改成: https://APP_URL/pbs.twimg.com/media/CkfhtlvWYAIgdMb.jpg:orig

    (不知为何不能带 https://或 http://)


    License

    Apache License2.0


    Demo && 立刻使用: ihuanmeng.com/twimgrp/

    例子: https://ihuanmeng.com/twimgrp/pbs.twimg.com/media/CkfhtlvWYAIgdMb.jpg:orig

    https://ssl.moefq.com/images/2016/06/10/aefba1267c999ff4bbb32fb95e44d3e8.png


    原文:ihuanmeng.com/use-nginx-uwsgi-to-proxy-twimg/

    25 条回复    2016-06-22 02:39:52 +08:00
    SoloCompany
        1
    SoloCompany  
       2016-06-10 01:20:47 +08:00
    twimg.com 好像一直(或大多数)都没有被墙的吧

    curl https://pbs.twimg.com/media/CkfhtlvWYAIgdMb.jpg:orig -v > /dev/null
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 104.244.43.135...
    0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to pbs.twimg.com (104.244.43.135) port 443 (#0)
    * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    * Server certificate: *.twimg.com
    * Server certificate: DigiCert SHA2 High Assurance Server CA
    * Server certificate: DigiCert High Assurance EV Root CA
    > GET /media/CkfhtlvWYAIgdMb.jpg:orig HTTP/1.1
    > Host: pbs.twimg.com
    > User-Agent: curl/7.43.0
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Date: Thu, 09 Jun 2016 17:23:15 GMT
    < Server: Apache
    < access-control-allow-origin: *
    < cache-control: max-age=604800, must-revalidate
    < content-md5: ppYsQlEEfam1trtSfEdeww==
    < content-type: image/jpeg
    < last-modified: Thu, 09 Jun 2016 07:32:44 GMT
    < x-connection-hash: 03d3d915f1e9daee68c580e95d73d63a
    < x-response-time: 18
    < Content-Length: 35924
    < Accept-Ranges: bytes
    < Via: 1.1 varnish
    < Age: 34261
    < X-Served-By: cache-tw-lax1-cr1-17-TWLAX1
    < X-Cache: HIT
    < Expires: Fri, 24 Jun 2016 17:23:15 GMT
    < X-Content-Type-Options: nosniff
    <
    0 35924 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0{ [7451 bytes data]
    100 35924 100 35924 0 0 9606 0 0:00:03 0:00:03 --:--:-- 9605
    * Connection #0 to host pbs.twimg.com left intact
    ZGLHHH
        2
    ZGLHHH  
    OP
       2016-06-10 01:22:26 +08:00
    YUX
        3
    YUX  
       2016-06-10 03:54:43 +08:00
    fcicq
        4
    fcicq  
       2016-06-10 07:41:16 +08:00
    nginx rewrite 直接能搞定的事为什么要 flask? 又慢又阻塞, wsgi 下只能发送 full response, 不是楼主想象的边收边发.
    9hills
        5
    9hills  
       2016-06-10 09:25:57 +08:00
    E-M-T!
    kendisk
        6
    kendisk  
       2016-06-10 09:58:53 +08:00 via Android
    nginx 反代一切
    just1
        7
    just1  
       2016-06-10 11:15:24 +08:00 via Android
    没事干嘛扯 flask , nginx 就够的事情
    ZGLHHH
        8
    ZGLHHH  
    OP
       2016-06-10 11:55:55 +08:00
    @fcicq
    @just1 抱歉,我之前并不知道 FLASK 的缺点,这个项目的灵感来自 @YUX 的反代新浪图床,所以我就直接 fork 代码来改了。
    notgod
        9
    notgod  
       2016-06-10 14:35:09 +08:00   ❤️ 1
    @ZGLHHH
    还是太年轻啊
    https://ihuanmeng.com/twimgrp/pbs.twimg.com/media/CkfhtlvWYAIgdMb.jpg:orig

    这种格式会触发网址关键词屏蔽的
    因为包含了 *.twimg.com 的域名
    有人访问 不出 1 周就阵亡了

    所有涉及 不可描述 的 使用加密 或者混淆下
    lslqtz
        10
    lslqtz  
       2016-06-10 17:19:02 +08:00 via iPhone
    @notgod 不是 https 么 你发的链接
    ZGLHHH
        11
    ZGLHHH  
    OP
       2016-06-10 18:28:24 +08:00
    @notgod HTTPS 不会被探测到吧?
    notgod
        12
    notgod  
       2016-06-10 18:51:42 +08:00
    @lslqtz
    @ZGLHHH

    可以肯定的告诉你们

    估计你们对 Qiang 的理解 还在 08 年的阶段
    现在的墙已经不是当初的墙了
    SSL 的探测从被动模式已经升级至主动模式

    没有秘密的 尤其是请求的是网址 还不是内容
    ZGLHHH
        13
    ZGLHHH  
    OP
       2016-06-10 19:25:20 +08:00
    @notgod 那么应该怎么做?
    notgod
        14
    notgod  
       2016-06-10 19:30:59 +08:00
    所有涉及 不可描述 的 使用加密 或者混淆下
    比如
    https://ihuanmeng.com/twimgrp/pbs.twimg.com/media/CkfhtlvWYAIgdMb.jpg:orig
    使用一个算法 加密字符串
    https://ihuanmeng.com/twimgrp/dawedwaudhweiaduiawd/media/CkfhtlvWYAIgdMb.jpg:orig
    然后 nginx 端 截取 dawedwaudhweiaduiawd 解密算法 解密为 pbs.twimg.com
    向后端请求


    这样就不会触发了
    反代保留 不可描述 的原域名地址 就是找死
    一个人无问题 一天 10IP 就 kill 了

    我见过
    前脚注册了一个域名
    使用 proxy php 的程序
    访问下 https://sss/face book. com
    后脚域名就被 Qiang 了
    lslqtz
        15
    lslqtz  
       2016-06-10 19:45:19 +08:00 via iPhone
    @notgod 是的,但是,内容和访问的 url 是有加密的。
    t123yh
        16
    t123yh  
       2016-06-10 20:03:31 +08:00 via Android
    顺便问一个问题,这种获取上游能不能用 HTTP Proxy 或者 socks5 Proxy 啊,这样可以把站点架设在境内,由服务器走代理
    ZGLHHH
        17
    ZGLHHH  
    OP
       2016-06-10 20:14:58 +08:00
    @t123yh
    应该可以,因为用到了 requests.get ,我认为会遵循系统的网络设置。
    或者,可以试试在服务器设置 hosts 。
    ZGLHHH
        18
    ZGLHHH  
    OP
       2016-06-10 20:15:37 +08:00
    @notgod 我建立了一个 antiblock 分支用于解决你所说的问题: https://github.com/HuanMeng0/uwsgi-nginx-flask-docker-for-twimg/tree/antiblock
    czb
        19
    czb  
       2016-06-11 10:51:11 +08:00 via Android
    HTTPS 下墙应该只能拿到 HOST ,具体目录是拿不到的
    lslqtz
        20
    lslqtz  
       2016-06-11 20:53:09 +08:00 via iPhone
    @czb 是的, IE6 及以下连 Host 都拿不到。
    czb
        21
    czb  
       2016-06-12 05:42:33 +08:00 via Android
    @lslqtz SNI 会透露 不过即使没开 SNI 扫证书也是可以出 HOST 的
    lslqtz
        22
    lslqtz  
       2016-06-12 06:22:04 +08:00
    @czb IE6 没有 SNI 啊。。
    czb
        23
    czb  
       2016-06-12 06:25:05 +08:00 via Android
    @lslqtz 对的……我的表达有问题……我的意思是 SNI 和证书都是泄漏 HOST 的途径,并没有特指 IE6...
    lslqtz
        24
    lslqtz  
       2016-06-12 06:47:52 +08:00 via iPhone
    @czb 只要不是不可描述的网站,一般都没啥关系我~
    lslqtz
        25
    lslqtz  
       2016-06-22 02:39:52 +08:00
    今天建了个谷歌反代。。想知道推特反代怎么搞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2571 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 273ms · UTC 01:38 · PVG 09:38 · LAX 17:38 · JFK 20:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.