例如,我有链接http://www.mediafire.com/?dr7j413wv5dc3n7t
获取direkt下载链接的最佳方法是什么
http://download656.mediafire.com/8qgjk46xjcag/dr7j413wv5dc3n7/Test.rar
和C#中的文件大小(347.31 KB)?
答案 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并使用两个类a
和input
来获取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);