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

Server returning 503 in program but works when accessed through browser?

我正在尝试在 C# 中为 KissAnime.com 制作一个 site-specific 视频下载器,它采用 URL 并从中获取所有视频页面 URL 和然后找到视频的 mp4 link 和 returns 所有视频 URLs 给用户,以便在 Internet 下载管理器或其他东西中批量下载。

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

还有其他方法可以获取页面的 HTML 吗?我阅读了一些有关从浏览器复制 headers 以使网站认为我的程序是人类的内容。我该怎么做?

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

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

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