我可以通过 webbrower 控件搞定这个,但我想知道,它到底做了什么?

解决方案 »

  1.   

    有没有嵌了一个 asp 的搞 session ?
      

  2.   

    网站用的jsp,session也是cookie的一种,我都接收到了
      

  3.   

    我测试没有问题,可以下载
    private void button1_Click(object sender, EventArgs e)
            {
                System.Net.WebClient wb = new System.Net.WebClient();
                wb.Headers.Add("Accept-Encoding","gzip, deflate");
                wb.Headers.Add("Cookie", "chk=113195; chk1=7; chk2=ETC; chk3=RP530060--0; __utma=69662033.524220299.1196127331.1196128043.1196128746.4; __utmb=69662033; __utmz=69662033.1196128746.4.3.utmccn=(referral)|utmcsr=alldatasheet.com|utmcct=/datasheet-pdf/pdf/113202/ETC/RP530060--0.html|utmcmd=referral; __utmc=69662033; __utma=191189370.20712304.1196127280.1196127987.1196128709.4; __utmb=191189370; __utmz=191189370.1196127280.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); __utmc=191189370");
                byte[] b= wb.DownloadData("http://pdf1.alldatasheet.com/datasheet-pdf/view/113202/ETC/RP530060--0/datasheet.pdf");
                System.IO.FileStream fs = new System.IO.FileStream(@"c:\aa.pdf", System.IO.FileMode.Create);
                fs.Write(b, 0, b.Length);
                fs.Close();
                MessageBox.Show(b.Length.ToString());
            }
      

  4.   

    和Referer 没有关系,他的cookie很长,不只4个,另外你需要添加Accept-Encoding识别服务器iis的压缩
      

  5.   

    感谢6楼, 这样加是可以的但,Cookie 你是用人工方式得到的吧?  这个网站比较恶心:每个pdf文件对应一个 Cookie, 我通过 httpwebrequest 只能得到前4个 cookies 后边的压根得不到,但是通过别的工具(ieheader)是可以得到的不知道大家对读取Cookies 有什么经验?
      

  6.   

    事实上,需求批量下载所有pdf,大概1000w个每次都得先去 .... html 得到cookies ; 然后再用这个cookies 定位到 .....pdf 来下载,而且,每个pdf对应的cookies都不同,没啥可靠的规律可言
      

  7.   

                System.Net.WebClient wb = new System.Net.WebClient();
                wb.Headers.Add("Cookie", "chk=113195; chk1=7; chk2=ETC; chk3=RP530060--0;");
                byte[] b = wb.DownloadData("http://pdf1.alldatasheet.com/datasheet-pdf/view/113202/ETC/RP530060--0/datasheet.pdf");
                System.IO.FileStream fs = new System.IO.FileStream(@"e:\aa.pdf", System.IO.FileMode.Create);
                fs.Write(b, 0, b.Length);
                fs.Close();
                MessageBox.Show(b.Length.ToString());webClient 这样就可以了,我很奇怪webrequest咋就不行,需要webrequest 显示下载进度和断点续传功能