python获取重定向url

序言:
本次需求发生场景如下:
我想用QQ机器人通过CQ码的形式发送抖音视频,但是当我获得抖音视频链接并发送的时候一直发送失败。
我将抖音视屏放在浏览器观看发现在按下回车的一刹那url地址栏中的地址会自动重定向,故此我得到的视频链接只是外层。这边用python获取重定向后的路径

http_headers = {
                        'Accept': '*/*',
                        'Connection': 'keep-alive',
                        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
                    }
 
    try:
        resp = requests.get(url=item, headers=http_headers,timeout=10)
    except Exception as e:
        continue
    print("resp", resp.url)
### Python中处理HTTP GET请求重定向的方法 在Python中,`requests`库是一个非常流行的工具,用于发送HTTP请求并接收响应。该库内置了对HTTP重定向的支持,能够简化开发者的工作流程[^2]。 当执行一个GET请求时,如果目标服务器返回了一个重定向状态码(如301、302),`requests`会自动跟随这些重定向,并最终获取到实际的目标资源的内容。以下是具体实现方法: #### 自动处理重定向 默认情况下,`requests.get()`函数会自动处理重定向。这意味着,在大多数场景下,开发者不需要额外编写代码来管理这一过程。例如,下面的代码展示了如何发起一个简单的GET请求,并让`requests`自动处理可能存在的重定向: ```python import requests response = requests.get('http://example.com') if response.status_code == 200: print("成功访问:", response.url) else: print("发生错误:", response.status_code) ``` 上述代码片段中,即使原始URL重定向到了其他地址,`response.url`仍然会显示最终的实际URL。 #### 手动控制重定向行为 有时为了调试或其他目的,可能希望禁用自动重定向功能或者自定义其行为。可以通过设置参数`allow_redirects=False`来关闭自动重定向支持。此时,程序将不会跟踪任何重定向链接,而是直接返回初始响应的状态码以及头部信息中的`Location`字段指示新的位置。 以下是一段展示如何手动追踪重定向链的例子: ```python import requests initial_response = requests.get('http://example.com', allow_redirects=False) while initial_response.status_code in (301, 302): new_location = initial_response.headers['Location'] print(f"正在转向 {new_location}") # 发起下一个请求至新地点 next_response = requests.get(new_location, allow_redirects=False) if next_response.status_code != 200 and 'Location' not in next_response.headers: break initial_response = next_response print("最后到达 URL:", initial_response.url if initial_response.status_code == 200 else "未找到有效页面") ``` 此脚本通过循环读取每次响应头里的`Location`键值直到不再有进一步的跳转为止[^3]。 #### 总结 无论是依赖于`requests`库自带的功能还是采取更精细的手工方式,都可以有效地应对各种类型的HTTP GET请求及其伴随而来的潜在重定向问题。选择合适的技术方案取决于具体的项目需求和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值