服务器在程序中返回503但在通过浏览器访问时工作?

时间:2015-08-18 13:36:19

标签: c# http webclient webclient-download

我正在尝试在C#中为KissAnime.com制作一个特定于网站的视频下载程序,它会获取一个URL并从中获取所有视频页面网址,然后找到该视频的mp4链接并返回所有视频网址用户在Internet Download Manager中进行批量下载。

这是我的问题:
我们以此Attack on Titan (Dub)页为例。您可以在浏览器中访问它。但是,如果您尝试通过webClient.DownloadString("thaturlgoeshere");之类的内容访问它,则会抛出一个WebException,说The remote server returned an error: (503) Server Unavailable.

是否有其他方法可以获取网页的HTML?我读到了一些关于从浏览器复制标题以使网站认为我的程序是人类的东西。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

实际问题是503是验证您的浏览器部分。您需要验证您的浏览器,因为它不起作用您需要使用原始套接字来连接和发送标头。

答案 1 :(得分:0)

KissAnime.com与许多其他网站一样,使用Cloudflare保护层向浏览器发送数学问题以解决并发回。这样做是为了检查浏览器是真实浏览器还是机器人,就像您的程序一样。

你最好的选择是使用像PhantomJS这样的无头浏览器。