如何使用请求通过python登录网站?

时间:2017-07-05 06:30:21

标签: python python-3.x

我已经完成了与此相关的stackoverflow的所有问题,但我无法解决我的问题。当我实现以下代码时,它成功运行,没有任何错误,但没有任何内容被打印。

import requests


payload = {'username': 'user','password': 'pass'}


with requests.Session() as s:
    p = s.post(' file-transfers.in/login.php?rid=worlddomains', 
          params=payload)
    r = s.get('http://file-transfers.in/member_arean.php')
    print r.text

2 个答案:

答案 0 :(得分:0)

Python requests docs中有一整章关于身份验证。

  

基本身份验证

     

许多需要身份验证的Web服务都接受HTTP Basic Auth。   这是最简单的一种,而Requests直接支持它   盒子。

     

使用HTTP Basic Auth发出请求非常简单:

>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
<Response [200]>
  

事实上,HTTP Basic Auth非常常见,因此请求提供了便利   使用它的简写:

>>> requests.get('https://api.github.com/user', auth=('user', 'pass'))
<Response [200]>
  

在这样的元组中提供凭据与完全相同   上面的HTTPBasicAuth示例。

答案 1 :(得分:0)

有问题的网站希望您将您的用户名/通行证作为POST数据发送,而不是作为网址参数发送:

payload = {'username': 'user','password': 'pass'}

with requests.Session() as s:
    p = s.post('http://file-transfers.in/login.php?rid=worlddomains', data=payload)
    r = s.get('http://file-transfers.in/member_arean.php')
    print(r.text)

登录过后可能会有更多内容,但如果没有帐户,我们无法检查发生了什么。