我知道这个问题已经有了一些问题。在阅读完所有主题后,我决定在确认HTML页面中获取重定向的URL,然后将其用作下载的直接链接。
如您所知,直接下载链接的原始URL格式是这样的。
https://drive.google.com/uc?export=download&id=XXXXX ..
但是如果目标文件的大小很大,那就是这样的。
https://drive.google.com/uc?export=download&confirm=RRRR&id=XXXXX ..
我可以从首次下载的数据中获得RRRR,因此我需要尝试两次才能下载真实文件。这个概念非常简单,但我不能让它发挥作用。
class Test
{
class MyWebClient: WebClient
{
CookieContainer c = new CookieContainer();
protected override WebRequest GetWebRequest(Uri u)
{
var r = (HttpWebRequest) base.GetWebRequest(u);
r.CookieContainer = c;
return r;
}
}
static string GetRealURL(string filename)
{
// Some Jobs to Parse....
return directLink;
}
static void Main()
{
MyWebClient wc = new MyWebClient();
string targetLink = "https://drive.google.com/uc?export=download&id=XXXXXXX";
wc.DownloadFile(targetLink, "tempFile.tmp");
targetLink = GetRealURL("tempFile.tmp");
wc.DownloadFile(targetLink, "realFile.dat");
}
}
我错了什么?
我可以从第一个文件中获得正确的下载链接,但是我在第二次尝试时得到另一个确认页面文件和另一个确认代码。我认为这是因为cookie,所以我创建了自己的WebClient
类,如上所示。
我最初使用DownloadFileAsync()
,并将其更改为DownloadFile()
以防万一,但结果相同..
我仍然认为它与cookie有关。
我在这里缺少什么?