Python 模拟登陆
import urllib
import urllib.request
import gzip
import Http
import http.cookiejar
#定义一个方法用于生成请求头信息,处理cookie
def getOpener(head):
# 初始化一个CookieJar来处理Cookie <pre name="code" class="python">
cj = http.cookiejar.CookieJar()
#实例化一个opener
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders = header
return opener
def ungzip(data):
#定义一个方法来解压返回信息
try: # 尝试解压
print('正在解压.....')
data = gzip.decompress(data)
print('解压完毕!')
except:
print('未经压缩, 无需解压')
return data
#执行操作,就是登陆
# header 这个表示封装成消息头的参数,参数类型是字典
#postDict 这个是用户名和密码的字典参数
def login(header,url,postDict):
opener = getOpener(header)
postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
print(data)
if __name__ == '__main__':
#封装消息头,伪装成浏览器
header = {
'Host': 'pcpre2.xjuke.com',
'Connection': 'keep-alive',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept': 'application/JSON, text/plain, */*',
'User-Agent': 'Mozilla/5.0 (windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/json;charset=utf-8',
'Referer': 'http://pcpre2.xjuke.com/?c=q-5ce/',
'Content-Length': '58'
}
#用户名和密码
postDict = {
'username': XXX,
'passWord': XX,
'wechatCode':'q-5ce'
}
login(header,'XXXXX',postDict)
相关文章