登录

详解爱文件下载接口请求思路

杂七杂八
0 57

最近”爱文件” 百度文库下载资源下载,火爆全网,今天给大家讲解下他是如何请求的接口,主要是看原理,所有请求接口都类似。希望可以帮助到大家

为了方便我这边就用thinkphp5开发框架做演示了

1.首先我们得有控制器,新建一个控制器,并渲染模版:

    //爱文件百度文库
    public function aaa()
    {
        return $this->fetch(':aa');
    }

2.然后新建模版页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>爱文件下载</title>
</head>
<body>
<form action="{:url('portal/index/aaa')}" method="post">
    <input id="url" name="url" type="text">
    <input id="submit_a" type="submit" value="一键下载">
</form>
</body>
</html>

form的控制器提交到刚刚新建的方法  提交方式选择post   写一个input 用于填写要下载的地址   另一个是提交按钮

3.既然有提交,那在控制器肯定得接收:

  //爱文件百度文库
    public function aaa()
    {
        $jieshou = input('url');
        return $this->fetch(':aa');
    }

这里可以通过dump()看看有没有接收到数据

4.接下来就是重点来了,我们来看看他是怎么请求的接口,我这边是用的谷歌浏览器,F12打开开发者工具,找到Network,改成如下图:

999

随便填写一个百度文库的地址 点击一键下载

5.这个时候我们就看到了接收回来的地址:111

http://120.78.64.22:8888/doc/%e6%96%b0%e6%a6%82%e5%bf%b5%e8%8b%b1%e8%af%ad%e5%8d%95%e8%af%8d.xls

想都不用想 访问这个地址肯定可以把文件下载下来的:

6.现在我们来看下它请求的是哪个地址

222

我们可以看到form的action 是提交到file/down,有这个那就好办了

现在我们在控制器 定义一下请求地址:

    //爱文件百度文库
    public function aaa()
    {
        $jieshou = input('url');
        $url = "http://aiwenjian.com/file/down";
        return $this->fetch(':aa');
    }

7.因为它做了限制肯定不是谁都能请求了,那么我们只能用他的域名模拟请求了,在header头里面可以看到444

    //爱文件百度文库
    public function aaa()
    {
        $jieshou = input('url');
        $url = "http://aiwenjian.com/file/down";
        $header = [
            'Referer: http://aiwenjian.com/'
        ];
        return $this->fetch(':aa');
    }

8.对了,还有一个问题,我们在之前看到的链接的百分号是经过处理的,所以我们这边也需要处理下:

    //爱文件百度文库
    public function aaa()
    {
        $jieshou = input('url');
        $url = "http://aiwenjian.com/file/down";
        $header = [
            'Referer: http://aiwenjian.com/'
        ];
        $url1 = "url=" . urlencode($jieshou);
        return $this->fetch(':aa');
    }

8.接下来就是做请求的事情了,我后边都写了备注,就不一个一个说了最终控制器代码

public function aaa()
    {
        $jieshou = input('url');
        $url = "http://aiwenjian.com/file/down";
        $header = [
            'Referer: http://aiwenjian.com/'
        ];
        $url1 = "url=" . urlencode($jieshou);
        $ch = curl_init();//初始化curl
        curl_setopt($ch CURLOPT_URL$url);//抓取指定网页
        curl_setopt($ch CURLOPT_HEADER 0);
        curl_setopt($ch CURLOPT_HTTPHEADER $header);
        curl_setopt($ch CURLOPT_RETURNTRANSFER 0);//要求结果为字符串且输出到屏幕上
        curl_setopt($ch CURLOPT_POST 1);//post提交方式
        curl_setopt($ch CURLOPT_POSTFIELDS $url1);
        $data = curl_exec($ch);//运行curl
        curl_close($ch);
        return $this->fetch(':aa'); 
  }

最终表单代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>爱文件下载</title>
</head>
<body>

<form action="{:url('portal/index/aaa')}" method="post">
    <input id="url" name="url" type="text">
    <input id="submit_a" type="submit" value="一键下载">
</form>

</body>
</html>

以下就是文件的下载地址:

对此其他疑问的 可以留言

发表评论

0 个回复