如何在使用asp.net的网站上进行HTTP POST?

时间:2017-03-31 10:01:14

标签: python asp.net http http-post python-requests

我正在使用Python库requests,但我似乎无法登录此网站。 该网址为https://www.bet365affiliates.com/ui/pages/affiliates/,我一直在尝试使用“ctl00 $ MasterHeaderPlaceHolder $ ctl00 $ passwordTextbox”,“ctl00 $ MasterHeaderPlaceHolder $ ctl00 $ userNameTextbox”等数据向https://www.bet365affiliates.com/Members/CMSitePages/SiteLogin.aspx?lng=1发送请求,但是我似乎永远无法登录。

有经验的人可以查看页面的源代码并告诉我这里缺少什么吗?

2 个答案:

答案 0 :(得分:0)

您是否检查过浏览器用于登录的http请求? 你应该复制它。

FB

答案 1 :(得分:0)

解决方案可能是这样的:请注意,你可以不用硒来做。如果你想没有它,首先你应该获得主联盟页面,并从响应数据中获取所有必需的信息(我通过xpaths收集)。我没有足够的时间在完全请求中写它。

要从响应数据中收集信息,您可以使用XML树库。使用相同的XPATH方法,您可以轻松找到所有请求的信息。

import requests
from selenium import webdriver

Password = 'YOURPASS'
Username = 'YOURUSERNAME'

browser = webdriver.Chrome(os.getcwd()+"/"+"Chromedriver.exe")
browser.get('https://www.bet365affiliates.com/ui/pages/affiliates/Affiliates.aspx')
VIEWSTATE=browser.find_element_by_xpath('//*[@id="__VIEWSTATE"]')
SESSIONID=browser.find_element_by_xpath('//*[@id="CMSessionId"]')
PREVPAG=browser.find_element_by_xpath('//*[@id="__PREVIOUSPAGE"]')
EVENTVALIDATION=browser.find_element_by_xpath('//* [@id="__EVENTVALIDATION"]')
cookies = browser.get_cookies()

session = requests.session()
for cookie in cookies:
    print cookie['name']
    print cookie['value']
    session.cookies.set(cookie['name'], cookie['value'])   

payload = {'ctl00_AjaxScriptManager_HiddenField':'',
           '__EVENTTARGET':'ctl00$MasterHeaderPlaceHolder$ctl00$goButton',
           '__EVENTARGUMENT':'',
           '__VIEWSTATE':VIEWSTATE,
           '__PREVIOUSPAGE':PREVPAG,
           '__EVENTVALIDATION':EVENTVALIDATION,
           'txtPassword':Username,
           'txtUserName':Password,
           'CMSessionId':SESSIONID,
           'returnURL':'/ui/pages/affiliates/Affiliates.aspx',
           'ctl00$MasterHeaderPlaceHolder$ctl00$userNameTextbox':Username,
           'ctl00$MasterHeaderPlaceHolder$ctl00$passwordTextbox':Password,
           'ctl00$MasterHeaderPlaceHolder$ctl00$tempPasswordTextbox':'Password'}


session.post('https://www.bet365affiliates.com/Members/CMSitePages/SiteLogin.aspx?lng=1',data=payload)