莫名堂 发表于 2020-9-25 09:09

C#爬虫怎么绕过图片网站的反爬?

private void button1_Click(object sender, EventArgs e)
      {
            Thread thread = new Thread(Download);
            thread.Start();
      }

      public void Download()
      {

            for (int i = 1; i <= 22; i++)
            {
                string url = "https://www.xiurenji.com/XiuRen/6545";
                url += "_" + i + ".html";
                string code = GetWebClient(url);
                MatchCollection mc = Regex.Matches(code, @"uploadfile/202009/23/{10}.jpg");
                foreach (Match mat in mc)
                {
                  string url1 = "https://img1.xiurenji.com/";
                  url1 += mat.ToString();
                  ImgSave(url1);
                }
            }
      }

      /// 图片另存为
      /// </summary>
      /// <param name="url">路径</param>
      public void ImgSave(string url)
      {

            WebRequest imgRequest = WebRequest.Create(url);

            HttpWebResponse res;
            try
            {
                res = (HttpWebResponse)imgRequest.GetResponse();
            }
            catch (WebException ex)
            {

                res = (HttpWebResponse)ex.Response;
            }

            if (res.StatusCode.ToString() == "OK")
            {
                System.Drawing.Image downImage = System.Drawing.Image.FromStream(imgRequest.GetResponse().GetResponseStream());

                string deerory = string.Format(@"D:\img\{0}\", DateTime.Now.ToString("yyyy-MM-dd"));

                string fileName = string.Format("{0}.png", DateTime.Now.ToString("HHmmssffff"));

                if (!System.IO.Directory.Exists(deerory))
                {
                  System.IO.Directory.CreateDirectory(deerory);
                }
                downImage.Save(deerory + fileName);
                downImage.Dispose();
            }
      }

下载下来的图片全是清一色的界面(我估摸着是有反爬),希望来个哥们解决下怎么绕过反爬,最好有代码。

liu8359 发表于 2020-9-25 09:26

感觉是正则不对吧,研究下,被领导看到看这个就{:1_911:}

longiana 发表于 2020-9-25 09:32

fiddler抓包对比请求头,缺失的在代码加上即可

Vvvvvoid 发表于 2020-9-25 09:34

header或者 body 或者 cookie 可能会有一个密钥鉴权,
加上就成

yudian 发表于 2020-9-25 09:39

昨天帮人搞爬图时候也遇到一样的状况,加上协议头部就可以了

yudian 发表于 2020-9-25 09:40

咱俩爬的一个网址哈哈哈,我成功了

哈_喽 发表于 2020-9-25 09:45

请求头加上referer,cookie,ua再试试

莫名堂 发表于 2020-9-25 09:47

liu8359 发表于 2020-9-25 09:26
感觉是正则不对吧,研究下,被领导看到看这个就

正则是对了的,下载下来的图片清一色是错误提示,图片来自***。

头狼 发表于 2020-9-25 09:47

又来送福利{:1_886:}

莫名堂 发表于 2020-9-25 09:50

yudian 发表于 2020-9-25 09:40
咱俩爬的一个网址哈哈哈,我成功了

你是用易语言爬取的吧,我应该看到过你发的
页: [1] 2
查看完整版本: C#爬虫怎么绕过图片网站的反爬?