Python 模拟登陆问题,请大牛小牛们帮帮看
import cookielib, urllib2, urllib
import math
cj=cookielib.LWPCookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
data={"account":'123', "passwd":'123'}
print 'login to get cookies'
url=r'http://localhost:8080/webDemo/login.jsp'
url_req=urllib2.Request(url, urllib.urlencode(data))
content=opener.open(url_req).read()
print(content)
cj.save('d:/somecookie')
<form action="./Login">
帐号:<input name="account"/>
密码:<input type="password" />
<input type="submit" value="提交" />
</form>
#!/usr/bin/python
import http.cookiejar
import urllib
#登录的主页面
hosturl = '***'#登录页面地址
#post数据接收和处理的页面(我们要向这个页面发送我们构造的Post数据)
posturl = '***'#提交表单的请求路径
#设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
urllib.request.install_opener(opener)
#打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功)
h = urllib.request.urlopen(hosturl)
#构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',
'Referer' : hosturl}
#构造Post数据,他也是从抓大的包里分析得出的。
postData = {
'password':'***',
'username':'****'
}
#需要给Post数据编码
postData = urllib.parse.urlencode(postData)
postData=postData.encode(encoding='utf_8', errors='strict')
request = urllib.request.Request(posturl, postData, headers)
print(request)
response = urllib.request.urlopen(request)
text = response.read()
print(text.decode("GBK"))