2017-03-19 92 views
0
import requests #auto class 
import webbrowser 
import re 

url='http://teaching.nkfust.edu.tw/Course/Login.aspx' 
UserName='*****' 
Password='******' 
my_headers={ 
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
'Accept-Encoding': 'gzip, deflate', 
'Accept-Language': 'zh-TW,zh;q=0.8,en-US;q=0.6,en;q=0.4', 
} 

sss=requests.session() 
r=sss.get(url,headers=my_headers) 
reg=r'<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*)" />' 
pattern = re.compile(reg) 
result = pattern.findall(r.content) 
viewstate = result[0] 

reg=r'<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*)" />' 
pattern = re.compile(reg) 
result = pattern.findall(r.content) 
eventvalidation=result[0] 

my_data={'__EVENTTARGET':'', 
'__EVENTARGUMENT':'', 
'__VIEWSTATE':viewstate, 
'__VIEWSTATEGENERATOR':'EC620E5A', 
'__PREVIOUSPAGE':'cMlf7B-ve9HBkgfrfv-q8AJ50_VEsc0av7p79gkEJJkZqg6TfVcScwYFuXh9Bxb7aIieofwU1eB980nSeO55lrEIVXs1', 
'__EVENTVALIDATION':eventvalidation, 
'Login1$UserName':UserName, 
'Login1$Password':Password, 
'Login1$LoginButton.x':'0', 
'Login1$LoginButton.y':'0', 
} 
r= sss.post(url, headers = my_headers, data = my_data) 
print r.url, r.status_code, r.history 
webbrowser.open(r.url, new=0, autoraise=True) 

我要問的是,爲什麼r.url = http://teaching.nkfust.edu.tw/Course/student/today.aspx一些問題,蟒蛇2.7.10請求

webbrowser.open(r.url,新= 0,autoraise = TRUE),這是開放給 http://teaching.nkfust.edu.tw/Course/Login.aspx?ReturnUrl=%2FCourse%2Fstudent%2Ftoday.aspx

+1

我不確定你的問題是什麼。看起來你正嘗試使用請求來驗證會話,然後在Web瀏覽器中神奇地使用經過驗證的會話,如果是這樣,那不是網絡的工作原理。檢查服務器在您的「請求」會話中設置的Cookie,然後嘗試在Web瀏覽器中注入這些Cookie。儘管你可以使用webdriver完成你所需要的功能(請參閱http://stackoverflow.com/questions/14445208/python-authenticate-and-launch-private-page-using-webbrowser-urllib-and-cookiej) – Seba

+0

因爲服務器重定向到新頁面。你有沒有試過打開'http:// teaching.nkfust.edu.tw/Course/student/today.aspx'這個頁面?如果你這樣做,你會看到瀏覽器被重定向到新頁面。 – elena

+0

如何用某些東西打開http://teaching.nkfust.edu.tw/Course/student/today.aspx? –

回答

0

如果我正確地得到你的問題,當使用request.get()時你的url「改變了」。這是一個常見的重定向。所以你不得不允許它。

r=sss.get(url,headers=my_headers, allow_redirects=False)