需要帮助了解如何在python中发送登录后信息吗

2024-04-26 20:57:54 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我现在正在做一个下载程序,所以我需要从输入的网页中获取.m3u8链接。我做了这个程序,它的工作很好,但对于高级独家视频它不能访问链接,因为链接不会显示在日志中,除非你登录。如果您有帐户,我想实现登录的功能,并且我一直在使用请求发布登录信息以及每个登录所需的身份验证密钥(_token),但没有效果。我登录,然后在r变量中尝试访问高级独占视频,但链接仍然不存在。这是我代码中的登录部分,显然我已经用用户名和密码替换了我的帐户详细信息,但是如果有人能帮我,我会非常感激,我对python还是比较陌生的,谢谢!你知道吗

……而且,我在打开Fiddler的情况下登录了网站,这样我就可以看到发布的内容,以便更好地理解过程,我将该字符串存储在“actual_POST”下,仅供参考。你知道吗

s = requests.Session()

url = "https://roosterteeth.com/login"
payload = {'username': 'password', 'password': 'password', '_token': 'GCZLoBNyjFrN2SReFjEydkN6qx6NT5hU8jVfyZOl'}
actual_POST = '_token=GCZLoBNyjFrN2SReFjEydkN6qx6NT5hU8jVfyZOl&username=username&password=password&redirectTo=http%3A%2F%2Froosterteeth.com%2F'

with s as j:
  b = s.post(url, data=payload, headers={'User-Agent': 'Mozilla/5.0'})
  r = s.get('http://roosterteeth.com/episode/rt-sponsor-cut-season-2-sponsor-play-alien-isolation-dlc')
  print(r.text)

Tags: 程序comtokenurl视频链接username帐户
2条回答

您不能使用从浏览器中提取的\u令牌,您需要发出请求并解析响应中的\u令牌,然后在帖子中使用该令牌:

import  requests
from bs4 import BeautifulSoup
url = "https://roosterteeth.com/login"
payload = {'username': 'dyour_user', 'password': 'your_pass',

           "redirectTo":"http://roosterteeth.com/"}
headers= {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36'}

with requests.Session() as s:
    r = s.get(url)
    payload["_token"] =  BeautifulSoup(r.text).select_one("input[name=_token]")["value"]
    b = s.post(url, data=payload, headers=headers, allow_redirects=1)
    print(BeautifulSoup(b.text,"lxml").select("p.username"))

如果我们使用我的登录详细信息运行上面的代码,您可以看到我们成功了:

In [21]: url = "https://roosterteeth.com/login"

In [22]: payload = {'username': 'xxxxx', 'password': 'xxxxx',
   ....: 
   ....:            "redirectTo": "http://roosterteeth.com/"}

In [23]: headers = {
   ....:     'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36'}

In [24]: with requests.Session() as s:
   ....:         r = s.get(url)
   ....:         payload["_token"] = BeautifulSoup(r.text,"lxml").select_one("input[name=_token]")["value"]
   ....:         b = s.post(url, data=payload, headers=headers, allow_redirects=1)
   ....:         print(BeautifulSoup(b.text, "lxml").select("p.username"))
   ....:     
[<p class="username"><a href="javascript:void">
                        xxxxx
                                                <i class="icon ion-arrow-down-b"></i>
</a></p>]

我在向需要先登录的API发送数据时遇到了类似的问题,我使用请求的cookiejar特性解决了这个问题-试试这个-

import requests
url = "https://roosterteeth.com/login"
url2 = "http://roosterteeth.com/episode/rt-sponsor-cut-season-2-sponsor-play-alien-isolation-dlc"
payload = {'username': 'password', 'password': 'password', '_token':    'GCZLoBNyjFrN2SReFjEydkN6qx6NT5hU8jVfyZOl'}
s = requests.Session()
c = s.get(url, params=payload)
r = c.cookies

t = requests.get(url2, cookies = r)
print(t.text)

相关问题 更多 >