3
試圖用Python刪除網站上的內容,該用戶名和密碼具有簡單的表單身份驗證,但也有一個名爲「箔」的隱藏字段,其中包含看起來像每次頁面加載時隨機生成的字符串。爲了成功登錄,該值必須包含在帖子的內容標題中。我試圖在登錄頁面加載後刪除隨機字符串,但仍然將我重定向回登錄。我的網站有一個有效的用戶名和密碼,但它是零星更新的,我想在發生變化時向我發送電子郵件。這裏是代碼我一直使用至今...Python Post與反刮擦保護形成
import urllib, urllib2, cookielib,subprocess
url='https://example.com/login.asp'
username='blah'
password='blah'
request = urllib2.Request(url)
opener = urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1))
preData = opener.open(request).readlines()
for line in preData:
if("foil" in line):
foils = line.split('"')
notFoiled = foils[3]
query_args={'location':'','qstring':'','absr_ID':notFoiled,'id':username,'pin':password,'submit':'Sign In'}
requestWheader = urllib2.Request('https://example.com/login.asp')
requestWheader.add_data(urllib.urlencode(query_args))
print 'Request method after data :', requestWheader.get_method()
print
print 'OUTGOING DATA:'
print requestWheader.get_data()
print
print 'SERVER RESPONSE:'
print urllib2.urlopen(requestWheader).read()
rawRes = urllib2.urlopen(requestWheader).read()
的形式看起來像這樣...
<form name="loginform" method="post" action="https://example.com/login.asp?x=x&&pswd=">
<input type=hidden name="location" value="">
<input type=hidden name="qstring" value="">
<input type=hidden name="absr_ID" value="">
<input type=hidden name="foil" value="91fcMO">
<input type="text" name="id" maxlength="80" size="21" value="" mask="" desc="ID" required="true">
<input type="submit" name="submit" value="Sign In" onClick="return checkForm(loginform)">
<input type="password" name="pin" size="6" maxlength="6" desc="Pin" required="true">
爲什麼你不傳遞查詢字符串? –
requestWheader.add_data(urllib.urlencode(query_args)) - >這不會傳遞查詢字符串嗎? – adam0101
嗯,沒有。查詢字符串是URL的一部分。 –