【问题标题】:Accessing Response Header Location in Through Python通过 Python 访问响应头位置
【发布时间】:2017-12-13 13:34:23
【问题描述】:

我目前正在尝试从 GET 请求访问 url 的响应标头中的位置字段:https://dbr.ee/aUJA/d?。目前,我已经能够通过这个 Python 代码查看位置字段:

import requests
r = requests.get('hhttps://dbr.ee/aUJA/d?', allow_redirects=False, headers={'User-Agent': 'Mozilla/5.0'})
print r.headers

但输出的是错误的位置字段

{'状态':'302 Found','X-Request-Id': '9e968067-1bee-4cc9-9305-19d45d5cb6ea','X-XSS-保护':'1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Transfer-Encoding': “分块”、“设置 Cookie”: '__cfduid=d21c538fd46c153a046bf461ca281978d1499637583;过期=星期一, 格林威治标准时间 09-7-18 21:59:43;路径=/;域=.dbr.ee; HttpOnly, ahoy_visitor=f4f1c08c-add3-45c0-8325-675b1caf3048;路径=/; 到期=2019 年 7 月 9 日星期二 21:59:44 -0000, ahoy_visit=cdbb4ca8-3272-473c-8562-03596d88ec0f;路径=/;过期=星期一, 2017 年 7 月 10 日 01:59:44 -0000,ahoy_track=true;路径=/,服务器 ID=; 过期=周四,1970 年 1 月 1 日 00:00:01 GMT;路径=/','X-运行时': '0.006820','服务器':'cloudflare-nginx','连接':'keep-alive', “位置”:“hhttps://dbr.ee/aUJA”,“缓存控制”:“无缓存”, “日期”:“2017 年 7 月 9 日星期日 21:59:44 GMT”,“X-Frame-Options”: 'SAMEORIGIN', '内容类型': 'text/html;字符集=utf-8','CF-RAY': '37be8d52fdc83822-ATL'}

即:

'位置':'hhttps://dbr.ee/aUJA'

在网站上,实际的响应头是这样的(通过 Chrome 开发者工具查看)

缓存控制:无缓存 cf-ray:37be8bacacb437d4-ATL 内容类型:文本/html; charset=utf-8 日期:2017 年 7 月 9 日星期日 21:58:36 格林威治标准时间 位置:hhttps://s.dbr.ee/sffc/python%2Dlogo%2Dmaster%2Dv3%2DTM.png.zip?temp_url_sig=41ebabb749293a6fe3f3ec82c5ab8ec01b0ed053&temp_url_expires=1499637816&filename=python-logo-master-v3-TM.png.zip;&附件 服务器:cloudflare-nginx 设置cookie:ahoy_visit=f7d15e42-155c-443f-a637-22c3681863a5;路径=/; 过期=2017 年 7 月 10 日星期一 01:58:36 -0000 的Set-Cookie:_dbree_session = U2x6akdCbUJ4c28wdW9MeUFYOXo1QUVxLzV3ZVNxcGtTWW1jbVdkWEdPOWZPMWFiOEl4M0VWY1dOWGNYTjNubEJoVWJHejRCTlQwQlkwL0UrM09QallTMzhFZlU3RFBBTDZxaW9xcGRMeXNlQS9mZFByYTZQWTM0ZlBHMU50ekhhTkt1bjZENXJHRnc2a3dWeGY2d3BBPT0tLVNKOTJnL0Q3SjloWEc0MTZqTnRPNFE9PQ%3D%3D - 2dd8f3e77a673f385c9a231af426b55f1d1f71c0; 域=dbr.ee;路径=/; HttpOnly set-cookie:SERVERID=;过期=周四, 格林威治标准时间 1970 年 1 月 1 日 00:00:01;路径=/状态:302 状态:302 找到 x-content-type-options:nosniff x-frame-options:SAMEORIGIN x-request-id:f57f3ca7-c7aa-4449-a2d7-7b5014010d0f x-r​​untime:0.015892 x-xss-保护:1;模式=块

位置在哪里

位置:hhttps://s.dbr.ee/sffc/python%2Dlogo%2Dmaster%2Dv3%2DTM.png.zip?temp_url_sig=41ebabb749293a6fe3f3ec82c5ab8ec01b0ed053&temp_url_expires=1499637816&filename=python-logo-master-v3-TM.png.zip ;&附件

这是我试图用 Python 抓取的下载链接。单击“直接下载”按钮后,它会出现在开发者工具中。

如何让标题显示 Python 中的正确字段位置?

*links 已在 http 前用 h 进行了修改,因为不允许我发布超过 2 个链接,但对于问题的上下文是必要的

【问题讨论】:

  • requests 是否运行 JavaScript?
  • 我认为 requests 不会。我知道 selenium 确实如此,我试图从页面中获取 javascript 并在 selenium 中运行它,但它不起作用,尽管我不确定要运行哪个 javascript 来模拟单击按钮。 @彼得伍德

标签: python ajax web


【解决方案1】:

看起来问题是缺少引用标头。一旦我将它添加到您的代码中,我就会得到适当的 302 重定向响应,并带有正确的 Location 标头:

import requests
r = requests.get('https://dbr.ee/aUJA/d?', allow_redirects=False, headers={
    'Referer': 'https://dbr.ee/aUJA'
})
print(r.headers)

产生:

{'Date': 'Sun, 09 Jul 2017 23:44:55 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Cookie': '__cfduid=d071cba66cc515ca7f2bc620362c6d46d1499643895; expires=星期一,09-Jul-18 23:44:55 GMT;路径=/;域=.dbr.ee; HttpOnly,ahoy_visitor=64d9f580-781e-4037-8951-ce57b73df720;路径=/; expires=2019 年 7 月 9 日星期二 23:44:55 -0000,ahoy_visit=802132cc-4e0e-4089-9be5-49f05223f567;路径=/; expires=2017 年 7 月 10 日星期一 03:44:55 -0000,SERVERID=;到期时间=周四,1970 年 1 月 1 日 00:00:01 GMT; path=/', '状态': '302 Found', 'Cache-Control': 'no-cache', 'X-XSS-Protection': '1; mode=block', 'X-Request-Id': '14a0d0df-c14d-477d-b87c-b6edb823619c', 'Location': 'https://s.dbr.ee/sffc/python%2Dlogo%2Dmaster%2Dv3%2DTM.png.zip?temp_url_sig=084b2b71c8c12df993d528e991a5b44e46e974ef&temp_url_expires=1499644195&filename=python-logo-master-v3-TM.png.zip;&attachment', 'X-Runtime': '0.006968 ','X-Frame-Options':'SAMEORIGIN','X-Content-Type-Options':'nosniff','Server':'cloudflare-nginx','CF-RAY':'37bf2769fda80fa5-YYZ'}

【讨论】:

    猜你喜欢
    • 2017-12-15
    • 2021-01-22
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多