Skip to content

Commit

Permalink
fix login fail pjialin#151
Browse files Browse the repository at this point in the history
  • Loading branch information
pjialin committed Apr 4, 2019
1 parent 1e3ea59 commit e56b545
Showing 1 changed file with 20 additions and 16 deletions.
36 changes: 20 additions & 16 deletions py12306/user/job.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ def request_device_id(self):
self.session.cookies.update({
'RAIL_EXPIRATION': result.get('exp'),
'RAIL_DEVICEID': result.get('dfp'),
# 'RAIL_EXPIRATION': '1554474881858',
# 'RAIL_DEVICEID': 'AuT-Gn6_zBqrgut3m5pj-OtRGGHDAKXfCDKI3SlDT98JBD-XzxPH08tjaplcAW5aKb8nyX90r92psp5QpwRIGTn6XeIwiQxvuwEnqseza6mPSAu_gmrGCLVpFvCbDUky4EB-UTjDH-ozAHx1oaz5KkvGgakW0Jou',
})
except:
return False
Expand Down Expand Up @@ -281,32 +283,34 @@ def _get_hash_code_params(self):
data_str += key + item
key = data_trans[key] if key in data_trans else key
params[key] = item
data_str_len = len(data_str)
data_str_len_tmp = int(data_str_len / 3) if data_str_len % 3 == 0 else int(data_str_len / 3) + 1
if data_str_len >= 3:
data_str_e = data_str[0:data_str_len_tmp]
data_str_f = data_str[data_str_len_tmp:2 * data_str_len_tmp]
data_str = data_str[2 * data_str_len_tmp:data_str_len] + data_str_e + data_str_f
data_str_len = len(data_str)
data_str_list = list(data_str)
for index in range(0, int(data_str_len / 2)):
if index % 2 == 0:
data_str_f = data_str[index]
data_str_list[index] = data_str[data_str_len - 1 - index]
data_str_list[data_str_len - 1 - index] = data_str_f
data_str = ''.join(data_str_list)
data_str = self._encode_string(data_str[::-1])
data_str = self._encode_data_str(data_str)
data_str_len = len(data_str)
data_str_len_div = int(data_str_len / 2)
if data_str_len % 2 == 0:
data_str = data_str[data_str_len_div:data_str_len] + data_str[0:data_str_len_div]
else:
data_str = data_str[data_str_len_div + 1:data_str_len] + \
data_str[data_str_len_div] + data_str[0:data_str_len_div]
data_str = self._encode_string(data_str)

data_str = self._encode_data_str(data_str)
data_str_tmp = ""
for e in range(0, len(data_str)):
data_str_code = ord(data_str[e])
data_str_tmp += chr(0) if data_str_code == 127 else chr(data_str_code + 1)

data_str = self._encode_string(data_str_tmp[::-1])
params['hashCode'] = data_str
return params

def _encode_data_str(self, data_str):
data_str_len = len(data_str)
data_str_len_tmp = int(data_str_len / 3) if data_str_len % 3 == 0 else int(data_str_len / 3) + 1
if data_str_len >= 3:
data_str_e = data_str[0:data_str_len_tmp]
data_str_f = data_str[data_str_len_tmp:2 * data_str_len_tmp]
return data_str_f + data_str[2 * data_str_len_tmp:data_str_len] + data_str_e
return data_str

def _encode_string(self, str):
import hashlib
import base64
Expand Down

0 comments on commit e56b545

Please sign in to comment.