使用python发送POST请求

时间:2015-01-21 01:17:05

标签: post python-requests

我正在尝试向网站(https://get.cbord.com/dartmouth/full/login.php)发送POST请求以登录。我认为我遇到的问题是我传入的数据格式,但说实话我我刚刚开始,所以我不太了解这一点。我尝试使用Chrome开发工具解密POST请求,这就是我想出来的。

#!/usr/bin/env python

import requests
import sys

EMAIL = 'xxx'
PASSWORD = 'xxx'

LOGIN_URL = 'https://get.cbord.com/dartmouth/full/login.php'
FULL_URL = 'https://get.cbord.com/dartmouth/full/funds_home.php'

def main():

  # Start a session so we can have persistant cookies
  #session = requests.session(config={'verbose': sys.stderr})
  session = requests.session()

  # This is the form data that the page sends when logging in
  login_data = {
    'username': EMAIL,
    'password': PASSWORD,
    'submit': 'Login',
  }

  # Authenticate
  r = session.post(LOGIN_URL, data=login_data)

  # Try accessing a page that requires you to be logged in
  r = session.get(FULL_URL)

if __name__ == '__main__':
  main()

大部分代码都是直接从对类似问题的回复中复制粘贴的。我想我只是不明白如何弄清楚login_data字典应该是什么。

感谢您的帮助!

专利

1 个答案:

答案 0 :(得分:0)

我检查了这个页面,发现还有一个参数:formToken。 您可以从网页源获取其价值。它看起来像这些      首先,您需要获取https://get.cbord.com/dartmouth/full/login.php页面

login_page = session.get(LOGIN_URL)
login_page_text = login_page.text

然后解析页面以从中检索formToken值并最终验证

login_data = {
   'username': EMAIL,
   'password': PASSWORD,
   'submit': 'Login',
   'formToken': formToken_value
}
# Authenticate
r = session.post(LOGIN_URL, data=login_data)
相关问题