Python模擬表單提交登錄廣工圖書館

模擬表單提交的原理:我們都知道Http是無狀態的,所以當我們提交的數據和瀏覽器中正常提交一樣,那麼服務器就會返回和瀏覽器中一樣的響應.所以我們這裏來模擬瀏覽器表單提交登錄廣東工業大學的圖書館 http://222.200.122.171:7771/login.aspx ,獲取cookie,我們接下來訪問圖書館網站裏的其他頁面時就帶上這個cookie,服務器會認爲我是已經登錄的用戶,回正常返回數據給我.

首先我們先用瀏覽器查看頁面源代碼找到要提交的form表單:



接下來我們要獲取表單中的input 包括hidden,因爲hidden也會跟着表單一起提交.找到賬號和密碼對應的name  到時候我們需要用自己的賬號填寫的.



獲取到所有的要提交的表單內容後,將賬號和密碼替換成自己的賬號和密碼,提交請求.獲取cookie並保存在cookie中.

代碼如下(Python2.7版本 和Python3都其實都差不多):

# -*- coding:utf-8 -*-
import urllib
import urllib2
import cookielib
import bs4

result = urllib2.urlopen("http://222.200.122.171:7771/login.aspx")
soup = bs4.BeautifulSoup(result, "html.parser")

logindiv = soup.find("form", attrs={"name": "aspnetForm"})
Allinput = logindiv.findAll("input")
inputData = {}
for oneinput in Allinput:
    if oneinput.has_attr('name'):
        if oneinput.has_attr('value'):
            inputData[oneinput['name']] = oneinput['value']
        else:
            inputData[oneinput['name']] = ""
inputData['ctl00$ContentPlaceHolder1$txtPas_Lib'] = '*****'
inputData['ctl00$ContentPlaceHolder1$txtUsername_Lib'] = '*******'

filename = 'cookie.txt'
# 聲明一個MozillaCookieJar對象實例來保存cookie,之後寫入文件
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata = urllib.urlencode(inputData)
result2 = opener.open("http://222.200.122.171:7771/login.aspx", postdata)
cookie.save(ignore_discard=True, ignore_expires=True)
#登錄後 要訪問的url
bookUrl = "http://222.200.122.171:7771/user/userinfo.aspx"
result=opener.open(bookUrl)
print result.read()





發佈了34 篇原創文章 · 獲贊 45 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章