从Mediafire.com获取直接下载链接和文件站点

时间:2011-01-09 16:09:42

标签: c#

例如,我有链接http://www.mediafire.com/?dr7j413wv5dc3n7t

获取direkt下载链接的最佳方法是什么

  

http://download656.mediafire.com/8qgjk46xjcag/dr7j413wv5dc3n7/Test.rar

和C#中的文件大小(347.31 KB)?

5 个答案:

答案 0 :(得分:4)

最好的方法是使用HTML解析器(例如HTML Agility Pack)来解析HTML然后查询它。

它允许您使用XPath查询HTML,非常类似于XmlDocument

答案 1 :(得分:1)

您应该与Mediafire联系,看看他们是否提供了API。

我猜他们没有API(至少,不能公开访问),这会导致你需要击败CAPTCHA和其他反僵尸技术。

尝试解决直接下载链接可能违反其服务条款,并且根据您所在的法律可能实际上是非法的。

答案 2 :(得分:1)

我已经为自己创建了一个功能,这里是:

    public string Mediafire(string download)
    {
        HttpWebRequest req;
        HttpWebResponse res;
        string str = "";
        req = (HttpWebRequest)WebRequest.Create(download);
        res = (HttpWebResponse)req.GetResponse();
        str = new StreamReader(res.GetResponseStream()).ReadToEnd();
        int indexurl = str.IndexOf("http://download");
        int indexend = GetNextIndexOf('"', str, indexurl);
        string direct = str.Substring(indexurl, indexend - indexurl);
        return direct;
    }

然后,GetNextIndexOf函数对除此之外的情况有用。这是Mediafire功能工作所必需的:

    private int GetNextIndexOf(char c, string source, int start)
    {
        if(start < 0 || start > source.Length - 1) {
            throw new ArgumentOutOfRangeException();
        }
        for(int i = start; i < source.Length; i++) {
            if(source[i] == c) {
                return i;
            }
        }
        return -1;
    }

答案 3 :(得分:0)

由于MediaFire直接下载链接是动态的,因此提供了用于这种云直接下载的服务。

您可以使用此网站,该网站从mediafire获取动态链接:
https://cdn.matix-media.net/direct-download

如果您想自己做,则应尝试解析HTML并使用两个类ainput来获取popsok标签元素,然后获取{{1 }}这个元素的标签。

截至2020年8月3日

答案 4 :(得分:0)

上面的 Mediafire dnld 代码有效,但您必须更改为 https 而不是 http,它仍然有效:

public string Mediafire(string download)
{
    HttpWebRequest req;
    HttpWebResponse res;
    string str = "";
    req = (HttpWebRequest)WebRequest.Create(download);
    res = (HttpWebResponse)req.GetResponse();
    str = new StreamReader(res.GetResponseStream()).ReadToEnd();
    int indexurl = str.IndexOf("https://download");
    int indexend = GetNextIndexOf('"', str, indexurl);
    string direct = str.Substring(indexurl, indexend - indexurl);
    return direct;
}

然后使用 webClient 进行实际下载:

var client = new WebClient();
string mfdirect = Mediafire(mediafirexUrl);

client.DownloadFile(mfdirect, outputFile);