Python 模拟登陆

发布时间:2019-06-22 23:47:03编辑:auto阅读(1961)

    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)


关键字