[nginx/openresty]代理请求修改referer,破解防盗链

/ 184,709评论 / 470571阅读 / 15点赞

有时我们想引用其他网站的资源(图片,视频等),明明在其网站上可用,而我们发送请求时却得到了403错误,访问被拒绝,很可能就是该网站对这些资源文件设置了防盗链,下面我们聊聊其防盗的原理以及破解方法。

名词

防盗链

Referer

Origin

破解防盗链

直接伪造请求

这个方法适用于客户端,而不适用于浏览器中的网页。

const axios = require(`axios`);
const getServer = (in_url, in_data, successFun, errFun) => {
    axios({
        method: "get",
        url:    in_url,
        params: in_data,
        headers: {
            "referer":"https://www.bilibili.com/"

            //"referer":"https://127.0.0.1/"  //你可以尝试使用这一句替换上面那句,请求将被拒绝
        }
    }).then(function (res) {
        console.log(res.data);
        if (typeof (successFun) != 'undefined') {
            successFun(res);
        }
        console.log("--- 请求成功 ---");
    }).catch(function (err) {
        console.log(err);
        if (typeof (errFun) != 'undefined') {
            errFun(err);
        }
        console.log("--- 请求失败 ---");
    })
}

//获取对应id的视频的下载链接
getServer(
    "https://api.bilibili.com/x/player/playurl",
    {
        "fnval": 80,
        "bvid":"BV1pT41157it",
        "cid":"746904707"
    });

代理转发

客户端,网页都适用,但一般客户端不需要由服务器代理,客户端自己可以搞定,就不需要占用服务器的带宽性能

server {
        listen       80;
        server_name  localhost, 127.0.0.1;
	resolver 8.8.8.8;
        location / {
		header_filter_by_lua_file /usr/local/openresty/lua/toBili.lua;
                proxy_set_header referer 'https://www.bilibili.com/';
		proxy_set_header Host $proxy_host;
		proxy_set_header Origin 'https://www.bilibili.com';
		if ($query_string ~* ^(.*)url=(.*)$) {
			proxy_pass $2;
		}
	}
}
ngx.header['Access-Control-Allow-Origin']  =  '*';
ngx.header['Access-Control-Allow-Methods'] = 'get, post, options';
ngx.header['Access-Control-Allow-Headers'] = 'dnt,x-mx-reqtoken,keep-alive,user-agent,x-requested-with,if-modified-since,cache-control,content-type,authorization';

关于空referer

<!DOCTYPE html>
<html lang="zh">
<head>

    <meta name="referrer" content="never">
</head>
<body>
</body>

摸索过程记录

add_header Access-Control-Allow-Origin '*';
add_header Access-Control-Allow-Methods 'POST,OPTIONS,GET';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

思考

上面的示例中,我们在使用时,只能也必须传入一个参数 url,那有没有办法传递更多参数呢?

  1. AllenTal说道:

    Pharmacie Internationale en ligne: pharmacie en ligne pas cher – п»їpharmacie en ligne france

  2. Donaldpax说道:

    Как похудеть

    Маленькая девочка без двух передних зубов очень обрадовалась этому и стала внимательно рассматривать упаковку, водя по надписям маленьким пальчиком:

    —Может, хватит чипсов? Пойдем чего-нибудь нормального посмотрим? Овощей там, фруктов…

    Таких слов мужчина совсем не ожидал от своей жены Тани. В их семье конституция тела совсем отличалась от стандартной и общепринятой – иметь предожирение абсолютная норма. Питание далеко отличалась от «правильного», чипсы и конфеты заменяли новомодный фреш из сельдерея и рыбу на пару. Спорт семья видела только по телевизору:

    —Ты что? Ты…. Ты что, худеть собралась? Где моя Танюшка – обжорка? Это тебя кто так обидел?! представитель сильного пола вовсе не предусматривал из уст родной супруги Татьяны. В данной семье конституция организма абсолютно отличалась по сравнению с стандартной и также утвердившейся – иметь предожирение абсолютная стандарт.

  3. RobertDer说道:

    https://levitraenligne.shop/# pharmacie en ligne livraison europe

  4. Keithhak说道:

    pharmacie en ligne france livraison internationale pharmacie en ligne sans ordonnance Pharmacie Internationale en ligne

  5. AllenTal说道:

    Viagra homme sans ordonnance belgique: viagra sans ordonnance – Viagra vente libre pays

  6. Edwardcit说道:

    Pharmacie en ligne livraison Europe: pharmacie en ligne sans ordonnance – vente de mГ©dicament en ligne

  7. Edwardcit说道:

    pharmacie en ligne france fiable: kamagra gel – pharmacie en ligne france livraison belgique

  8. IgnacioelOrb说道:

    Pharmacie sans ordonnance: Levitra acheter – pharmacie en ligne pas cher

  9. AllenTal说道:

    trouver un mГ©dicament en pharmacie: cialis generique – pharmacie en ligne sans ordonnance

  10. This seemingly preposterous result,ラブドール 男the authors note,

  11. AllenTal说道:

    trouver un mГ©dicament en pharmacie: Levitra pharmacie en ligne – pharmacie en ligne

  12. IgnacioelOrb说道:

    Pharmacie en ligne livraison Europe: levitra generique sites surs – Pharmacie Internationale en ligne

  13. XRumer23jatup说道:

    ?They were sorting out the groceries together in the spacious kitchen, and the daughter went to rest in her room. It was made like for a real princess: there was a flower print on the stretch ceiling, the pink wallpaper harmoniously combined with the white furniture. In some places on the walls, Masha’s autographs were left: this is how the little girl was learning to draw and explore this world:

    — So will you tell me why we need to lose weight? Who put that into your head?

    — My dear, I’m tired of being embarrassed! All my colleagues are thin and fragile, and against their background, I’m like an elephant in a china shop. I don’t even fit on two chairs anymore, do you understand me? Vika constantly pokes at our family, saying how many tons you eat a day. I’m sick of it all, I can’t take it anymore. It’s disgusting to look in the mirror…

    — And Vika doesn’t have a sense of tact at all? Okay, if that’s the case, then we’ll show them.

  14. IgnacioGinia说道:

    pharmacie en ligne avec ordonnance: achat kamagra – pharmacie en ligne france livraison internationale

  15. IgnacioGinia说道:

    vente de mГ©dicament en ligne: kamagra 100mg prix – pharmacie en ligne fiable

  16. Edwardcit说道:

    pharmacie en ligne france livraison internationale: pharmacies en ligne certifiГ©es – acheter mГ©dicament en ligne sans ordonnance

  17. IgnacioGinia说道:

    pharmacie en ligne france livraison internationale: levitra generique – Achat mГ©dicament en ligne fiable

  18. RobertDer说道:

    https://viaenligne.shop/# Viagra générique sans ordonnance en pharmacie

  19. Edwardcit说道:

    Meilleur Viagra sans ordonnance 24h: Viagra homme sans prescription – Viagra en france livraison rapide

  20. Edwardcit说道:

    pharmacie en ligne france livraison internationale: acheter kamagra site fiable – pharmacie en ligne sans ordonnance

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注