사용자 이름과 암호를 사용하여 간단한 폼 인증을 사용하는 사이트에서 내용을 긁어 내려고했지만 "호일"이라고하는 숨겨진 필드가 있습니다. 페이지가로드 될 때마다 임의로 생성 된 문자열입니다. 해당 값을 성공적으로 로그인하려면 게시물의 콘텐츠 헤더에 포함되어야합니다. 로그인 페이지가로드 된 후에 임의의 문자열을 긁어 내려고했지만 여전히 로그인으로 다시 리디렉션했습니다. 작동하는 사이트의 유효한 사용자 이름과 암호가 있지만 산발적으로 업데이트되며 변경 될 때 전자 메일을 보내고 싶습니다. 여기에 지금까지 작업했던 코드 ...Python 백신 방지를 사용하여 양식 게시
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의 일부입니다. –