【问题标题】:How to get redirect url code with Python?如何使用 Python 获取重定向 url 代码?
【发布时间】:2019-06-21 17:02:28
【问题描述】:

期望的结果:获取 URL - https://secure.tdameritrade.com/authCafe?code=123456789....

我正在尝试从下面列出的 image#2 中获取代码。它位于重定向 URL 中。我查看了整个stackoverflow,但没有一个建议奏效。我尝试了每一个变化。如果有人可以提供帮助,将不胜感激

网址:https://auth.tdameritrade.com/auth?response_type=code&redirect_uri=https://secure.tdameritrade.com/authCafe&client_id=MOBI@AMER.OAUTHAP

图片#1:

图片#2:

图片 #3:我不断收到此 URL 错误:

我当前的失败代码:

import requests
import json

request_session = requests.session()
url = 'https://auth.tdameritrade.com/auth?response_type=code&redirect_uri=https://secure.tdameritrade.com/authCafe&client_id=MOBI@AMER.OAUTHAP'
data = {'username':'MY_USERNAME', 'password': 'MY_PASSWORD'}
auth_reply = request_session.post(url, data=data)
#auth_reply = request_session.post(url, auth=('MY_USERNAME', 'MY_PASSWORD'))
#auth_reply2 = request_session.get(auth_reply.url)
#auth_reply = request_session.post(url, data=data)
print(auth_reply.history[0].url)
print(auth_reply.history)
print(request_session.get(auth_reply.url).url)
print(auth_reply.url)

我会根据 post/get 获得状态码 302 或状态码 200

【问题讨论】:

  • auth_reply 的状态码是什么?我假设它是 30x,你应该可以在 auth_reply.headers 中找到目标 url,可能在 ["Location"] 下。
  • 302 和 200 都不是错误状态代码。 200 是“成功/ok”,302 是"redirect/found"
  • @mfrackowiak 根据变化,有时我会得到状态代码 302 或状态 200。但它们总是导致 URL 带有“?error=access_denied...”而不是我想要的代码 URL。我尝试了标题之一,但没有找到我想要的东西

标签: python session url redirect python-requests


【解决方案1】:

我找到了解决方案。该网站未针对简单的用户名/密码身份验证进行优化。为了以编程方式登录,我还必须将隐藏值输入:

data = {'username':'MY_USERNAME', 'password': 'MY_PASSWORD', '_csrf' : ...}

剩下的隐藏值可以由它们的JS文件生成。

这是解决问题的一种抓取方法。

图片#1:

【讨论】:

    猜你喜欢
    • 2022-10-21
    • 2011-06-21
    • 2021-07-16
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    相关资源
    最近更新 更多