无法使用 Python 的请求模块登录 ASP.NET 网站 [英] Unable to log in to ASP.NET website with requests module of Python

查看:25
本文介绍了无法使用 Python 的请求模块登录 ASP.NET 网站的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 ASP.NET 网站Python 中的 >requests 模块.

在网站中手动登录时,我可以看到以下标题和 cookie.

请求标头:

接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8接受编码:gzip,放气接受语言:en-US,en;q=0.8缓存控制:最大年龄= 0连接:保持连接内容长度:810内容类型:应用程序/x-www-form-urlencodedCookie:ASP.NET_SessionId=sfiziz55undlnz452gfc2d55;__utma=120481550.280814175.1411461613.1411461613.1411479534.2;__utmb=120481550.1.10.1411479534;__utmc=120481550;__utmz=120481550.1411461613.1.1.utmcsr=(直接)|utmccn=(直接)|utmcmd=(无)主机:www11.davidsonsinc.com来源:http://www11.davidsonsinc.com参考:http://www11.davidsonsinc.com/Login/Login.aspx?ReturnUrl=%2fdefault.aspx用户代理:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.103 Safari/537.36

表单数据:

__EVENTTARGET:__事件参数:__最后焦点:__VIEWSTATE:/wEPDwUKMTY3MDM5MDAxNQ9kFgJmD2QWAgIDD2QWAgIDD2QWAgIBD2QWBAIBD2QWAmYPZBYCAg0PEA8WAh4HQ2hlY2tlZGdkZGRkAgMPDxYCHgdWaXNpYmxlaGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBUBjdGwwMCRDb250ZW50UGxhY2VIb2xkZXJOYXZQYW5lJExlZnRTZWN0aW9uJFVzZXJMb2dpbiRSZW1lbWJlck1lsSFPYUYvIbQNBPs/54aHYcx6GyU =__视图状态生成器:1806D926__事件验证:/wEWBQLy8oGOCwKanaixDwKPr7TsAQKu3uTtBgKs+sa/CQVDEisOu4Iw1m9stXWgAAz9TWQnctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$UserName:用户名ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$Password:passwordctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$RememberMe:onctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$LoginButton:登录

请求 Cookie

ASP.NET_SessionId: nz452gfc2d55

响应 Cookie

<预> <代码> .ASPXAUTH:1F5A05237A1AA18795ECA108CE6E70D48FE5CBB5B38D061E0770618F6C069ABA03604335B6209CF8198AD3E98AE934F14056F5C887A92BB099BF38D639A22BC12972DEEE91BCE0BF36239BD1728E228E0E9CA1E5146A6C69E906E177CC8FB27395CE2F56B4013535C62E821384231EF0AD632474D6EBCFCD859882DBE9D420B6A8816BE6

以下是我使用 Python/Django 登录网站时使用的脚本一>.

导入请求使用 requests.Session() 作为 c:url = 'http://www.noobmovies.com/accounts/login/?next=/'USERNAME = '用户名'密码 = '密码'c.get(url)csrftoken = c.cookies['csrftoken']login_data = dict(csrfmiddlewaretoken=csrftoken,用户名=用户名,密码=密码,next='/')c.post(url, data=login_data, headers={"Referer":"http://www.noobmoviews.com/"})page = c.get('http://www.noobmovies.com/user/profile/0/')打印 page.status_code

但我不知道如何登录 ASP.NET 网站.如何在 ASP.NET 网站上发布数据?

导入请求从 bs4 导入 BeautifulSoupURL="http://www11.davidsonsinc.com/Login/Login.aspx"headers="User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"}用户名 =用户名"密码=密码"s=requests.Session()s.headers.update(标题)r=s.get(URL)汤=美丽的汤(r.content)VIEWSTATE=soup.find(id="__VIEWSTATE")['value']VIEWSTATEGENERATOR=soup.find(id="__VIEWSTATEGENERATOR")['value']EVENTVALIDATION=soup.find(id="__EVENTVALIDATION")['value']login_data={"__VIEWSTATE":VIEWSTATE,"__VIEWSTATEGENERATOR": VIEWSTATEGENERATOR,"__EVENTVALIDATION":事件验证,"ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$UserName":用户名,"ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$Password":密码,"ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$LoginButton":"登录"}r=s.post(URL, data=login_data)打印 r.url

I am trying to log in to an ASP.NET website using the requests module in Python.

While logging in manually in the website I can see the following headers as well as cookies.

Request Headers:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:810
Content-Type:application/x-www-form-urlencoded
Cookie:ASP.NET_SessionId=sfiziz55undlnz452gfc2d55; __utma=120481550.280814175.1411461613.1411461613.1411479534.2; __utmb=120481550.1.10.1411479534; __utmc=120481550; __utmz=120481550.1411461613.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Host:www11.davidsonsinc.com
Origin:http://www11.davidsonsinc.com
Referer:http://www11.davidsonsinc.com/Login/Login.aspx?ReturnUrl=%2fdefault.aspx
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.103 Safari/537.36

Form Data:

__EVENTTARGET:
__EVENTARGUMENT:
__LASTFOCUS:
__VIEWSTATE:/wEPDwUKMTY3MDM5MDAxNQ9kFgJmD2QWAgIDD2QWAgIDD2QWAgIBD2QWBAIBD2QWAmYPZBYCAg0PEA8WAh4HQ2hlY2tlZGdkZGRkAgMPDxYCHgdWaXNpYmxlaGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBUBjdGwwMCRDb250ZW50UGxhY2VIb2xkZXJOYXZQYW5lJExlZnRTZWN0aW9uJFVzZXJMb2dpbiRSZW1lbWJlck1lsSFPYUYvIbQNBPs/54aHYcx6GyU=
__VIEWSTATEGENERATOR:1806D926
__EVENTVALIDATION:/wEWBQLy8oGOCwKanaixDwKPr7TsAQKu3uTtBgKs+sa/CQVDEisOu4Iw1m9stXWgAAz9TWQn
ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$UserName:Username
ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$Password:password
ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$RememberMe:on
ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$LoginButton:Log In

Request Cookies

ASP.NET_SessionId: nz452gfc2d55

Response Cookies

.ASPXAUTH: 1F5A05237A1AA18795ECA108CE6E70D48FE5CBB5B38D061E0770618F6C069ABA03604335B6209CF8198AD3E98AE934F14056F5C887A92BB099BF38D639A22BC12972DEEE91BCE0BF36239BD1728E228E0E9CA1E5146A6C69E906E177CC8FB27395CE2F56B4013535C62E821384231EF0AD632474D6EBCFCD859882DBE9D420B6A8816BE6

Following is the script I use to log in in to websites using Python/Django.

import requests
with requests.Session() as c:
    url = 'http://www.noobmovies.com/accounts/login/?next=/'
    USERNAME = 'user name'
    PASSWORD = 'password'
    c.get(url)
    csrftoken = c.cookies['csrftoken']
    login_data = dict(csrfmiddlewaretoken=csrftoken, username=USERNAME, password=PASSWORD, next='/')
    c.post(url, data=login_data, headers={"Referer":"http://www.noobmoviews.com/"})
    page = c.get('http://www.noobmovies.com/user/profile/0/')

    print page.status_code

But I don't know how to log in into an ASP.NET website. How do I post the data on the ASP.NET website?

解决方案

import requests
from bs4 import BeautifulSoup

URL="http://www11.davidsonsinc.com/Login/Login.aspx"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"}

username="username"
password="password"

s=requests.Session()
s.headers.update(headers)
r=s.get(URL)
soup=BeautifulSoup(r.content)

VIEWSTATE=soup.find(id="__VIEWSTATE")['value']
VIEWSTATEGENERATOR=soup.find(id="__VIEWSTATEGENERATOR")['value']
EVENTVALIDATION=soup.find(id="__EVENTVALIDATION")['value']

login_data={"__VIEWSTATE":VIEWSTATE,
"__VIEWSTATEGENERATOR":VIEWSTATEGENERATOR,
"__EVENTVALIDATION":EVENTVALIDATION,
"ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$UserName":username,
"ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$Password":password,
"ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$LoginButton":"Log In"}

r=s.post(URL, data=login_data)
print r.url

这篇关于无法使用 Python 的请求模块登录 ASP.NET 网站的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆