编程语言
首页 > 编程语言> > 使用python mechanize使用javascript md5散列函数登录网页

使用python mechanize使用javascript md5散列函数登录网页

作者:互联网

我正在尝试使用python / mechanize登录此网页:
http://www.solaradata.com/cgi-bin/mainProgram.cgi

登录表单使用Javascript函数,该函数在提交结果以进行身份​​验证之前从多个字段值生成MD5哈希值.由于机械化无法执行javascript,我尝试在python中复制相同的功能,然后提交结果值.但是,我仍然收到“无效的用户/密码”错误.

这是我目前的代码,任何人都可以指出我哪里出错了?谢谢!

url_login = 'http://www.solaradata.com/cgi-bin/mainProgram.cgi'

import mechanize
import md5

username  = 'superfly'  #not my real user/pass
password  = 'stickyguy' #not my real user/pass

br = mechanize.Browser()
br.open(url_login)
br.select_form(nr=0)
br.set_all_readonly(False)

session        = br['session']
br['user']     = username
br['password'] = password

m1 = md5.new()
m1.update(password + username)
br['password'] = m1.digest()

m2 = md5.new()
m2.update(password + session)
br['hash'] = m2.digest()

for form in br.forms():
  #print form

  request2 = form.click()  # mechanize.Request object
  try:
      response2 = mechanize.urlopen(request2)
  except mechanize.HTTPError, response2:
      pass

  print response2.geturl()
  # headers
  for name, value in response2.info().items():
      if name != "date":
          print "%s: %s" % (name.title(), value)
  print response2.read()  # body
  response2.close()

解决方法:

使用m1.hexdigest()而不是m1.digest()

标签:python,javascript,md5,mechanize,autologin
来源: https://codeday.me/bug/20190710/1421221.html