2014-09-23 27 views
7

Tôi đang cố gắng đăng nhập vào trang web ASP.NET bằng cách sử dụng mô-đun requests trong Python.Không thể đăng nhập vào trang web ASP.NET với mô-đun yêu cầu của Python

Trong khi đăng nhập thủ công trong trang web, tôi có thể thấy các tiêu đề sau cũng như cookie.

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 

Mẫu dữ liệu:

__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 

Yêu cầu Cookies

ASP.NET_SessionId: nz452gfc2d55 

đáp ứng Cookie

.ASPXAUTH: 1F5A05237A1AA18795ECA108CE6E70D48FE5CBB5B38D061E0770618F6C069ABA03604335B6209CF8198AD3E98AE934F14056F5C887A92BB099BF38D639A22BC12972DEEE91BCE0BF36239BD1728E228E0E9CA1E5146A6C69E906E177CC8FB27395CE2F56B4013535C62E821384231EF0AD632474D6EBCFCD859882DBE9D420B6A8816BE6 

Sau đây là kịch bản tôi sử dụng để đăng nhập vào các trang web sử dụng 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 

Nhưng tôi không biết cách đăng nhập vào trang web ASP.NET. Làm cách nào để đăng dữ liệu trên trang web ASP.NET?

Trả lời

14
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 
+0

Cảm ơn Mohsin, Đây là những gì tôi đang tìm kiếm, hoạt động của nó hoàn hảo. Cảm ơn một tấn !!! –

+0

:-) Tôi rất vui vì tôi có thể trợ giúp –

3

Ban đầu tôi đã sử dụng các yêu cầu + bs4, tuy nhiên tôi đã gặp sự cố tương tự với trang web ASPX tôi đang loại bỏ. Tôi tìm thấy một thư viện khác có tên là robobrowser kết thúc tốt đẹp các yêu cầu + bs4. Với điều này bạn không còn phải tự thiết lập các mục như "__VIEWSTATE" và bạn bè khi tương tác với các trang web ASPX.

from robobrowser import RoboBrowser 

url = ' http://www11.davidsonsinc.com' 
login_url = url + '/Login/Login.aspx' 

username = "username" 
password = "password" 

browser = RoboBrowser(history=True) 
# This retrieves __VIEWSTATE and friends 
browser.open(login_url) 

signin = browser.get_form(id='aspnetForm') 
signin["ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$UserName"].value = username 
signin["ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$Password"].value = password 
signin["ctl00$ContentPlaceHolderNavPane$LeftSection$UserLogin$LoginButton"].value = "Log In" 
browser.submit_form(signin) 
print browser.url 
Các vấn đề liên quan