php如何实现mve,php – 生成谷歌驱动器链接的自定义直接下载链接

快速浏览一下网站的源代码,它会生成以下javascript.

setTimeout(function() {

window.location.href = "https://doc-0o-a0-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/nemv3kbhggb02fn2933p80ec5vsi521t/1512345600000/10410701494873540224/*/0B475ByfcR9n4a1JMVEZxQno2Tmc?e=download";

}, 300);

但是这个网址来自哪里?

当它确实要求在谷歌上确认时,稍微摆弄并观看控制台,你可以看到它发出POST请求并返回一些json.

)]}'

{"disposition":"SCAN_CLEAN","downloadUrl":"https://doc-0c-9k-docs.googleusercontent.com/docs/securesc/aonp7ed1gjmns5tl5di4fl0psa1cppk8/16panrhf9etu7sqgddkaduij5anokf8t/1512345600000/17294955007197410767/17294955007197410767/0ByzJffaEk18uN2ZLeGlIRGVOaDJmWS1WU1RUN3dXUGdtUUx3?e\u003ddownload","fileName":"install.sh","scanResult":"OK","sizeBytes":4936}

所以用PHP来嘲笑它

对该网址发出json POST请求,google将使用json进行响应,然后将其删除)]}’json解码它,然后使用标头重定向到该文件.

$id = '0B475ByfcR9n4a1JMVEZxQno2Tmc';

$ch = curl_init('https://drive.google.com/uc?id='.$id.'&export=download');

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");

curl_setopt($ch, CURLOPT_POSTFIELDS, []);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(

'Content-Type: application/json',

... see notice below

));

$result = curl_exec($ch);

$object = json_decode(str_replace(')]}\'', '', $result));

exit(header('Location: '. $object->downloadUrl));

编辑(08-04-18)

看起来已经添加了一些额外的标头,如果丢失它会抛出400 Bad Request.没什么大不了的,通过查看从您自己的驱动器下载文件时的请求标题来模拟它仍然很容易.我不愿意共享一个复制和粘贴解决方案,因为上面仍然有效,你只需要添加一些标题,StackOverflow不是一个免费的编码服务,我也不需要保持我写过的每一个答案.祝你好运.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值