Debugging 为什么库请求在此URL上失败?

Debugging 为什么库请求在此URL上失败?,debugging,browser,python-requests,Debugging,Browser,Python Requests,我有。当我尝试以编程方式访问它时,后端服务器失败(我不运行服务器): 当我查看内容时,它是一个错误页面,尽管状态代码是200。如果你点击链接,它会在你的浏览器中工作——你会得到一个PDF——这就是我在r.content中所期望的。因此,它在我的浏览器中工作,但在请求中失败 为了进行诊断,我试图消除浏览器和请求库之间的差异。到目前为止,我已经: 禁用的Javascript 禁用(和删除)Cookie 将每个应用程序中的用户代理设置为相同 但是我无法让它在请求中正常工作,或者由于禁用了某些东西而

我有。当我尝试以编程方式访问它时,后端服务器失败(我不运行服务器):

当我查看内容时,它是一个错误页面,尽管状态代码是200。如果你点击链接,它会在你的浏览器中工作——你会得到一个PDF——这就是我在r.content中所期望的。因此,它在我的浏览器中工作,但在请求中失败

为了进行诊断,我试图消除浏览器和请求库之间的差异。到目前为止,我已经:

  • 禁用的Javascript
  • 禁用(和删除)Cookie
  • 将每个应用程序中的用户代理设置为相同

但是我无法让它在请求中正常工作,或者由于禁用了某些东西而在浏览器中失败。有谁对浏览器魔术有更好的了解,能帮我诊断和解决这个问题吗

请求在Chrome中有效吗?如果是这样,您可以打开web检查器并右键单击请求,将其作为curl命令复制。然后,您将可以访问所有的头、参数和请求正文,您可以使用这些头、参数和正文查看触发请求库失败的原因。

您可能遇到了一个基于用户代理进行区分的服务器。这项工作:

import requests
S = requests.Session()
S.headers.update({'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'})
r = S.get('http://www.courts.wa.gov/index.cfm?fa=controller.managefiles&filePath=Opinions&fileName=875146.pdf')

with open('dl.pdf', 'wb') as f:
    f.write(r.content)

可能是因为内容长度没有明确规定吗?不,我相信这是可以接受的,尽管我不赞成。这是一个奇怪的地方,但更大的奇怪之处请看我下面的评论。它在Chrome中工作,复制的cURL命令也能工作。从那时起,我就开始打头球,直到失败。如果不提供用户代理,它将失败。不知道为什么我的另一个代码以前不工作,但现在可以复制了,谢谢。我宣布,无论谁管理这台服务器,都是我的新敌人。@Lukasa和我,帮助维护请求的人,已经先发制人地宣布这些服务的所有管理员都是我们的敌人。欢迎来到我们的世界是的,就是这样。请参阅我对@ryan答案的评论。
import requests
S = requests.Session()
S.headers.update({'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'})
r = S.get('http://www.courts.wa.gov/index.cfm?fa=controller.managefiles&filePath=Opinions&fileName=875146.pdf')

with open('dl.pdf', 'wb') as f:
    f.write(r.content)