pa_xubao.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import time
  2. import requests
  3. import execjs
  4. from spiders.pingan.Login.pa_login import pinganlogin
  5. from config import *
  6. class PA_xubao(object):
  7. def __init__(self,uname,pwd,vin):
  8. self.uname=uname
  9. self.pwd=pwd
  10. self.vin=vin
  11. cookie=pinganlogin('DHJWA-87743', 'TIANqin2022').main()
  12. self.cookies = {
  13. 'USER_REDIS_COOKIE': cookie
  14. }
  15. self.headers = {
  16. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
  17. 'Content-Type':'application/json;charset=UTF-8',
  18. }
  19. def get_sign(self):
  20. with open(js_path+'pingan/sign.js', 'r') as f:
  21. jscode = f.read()
  22. sign = execjs.compile(jscode).call('get_sign', '')
  23. return sign
  24. def get_info(self):
  25. sign=self.get_sign()
  26. json_data = {
  27. 'departmentCode': '23388',
  28. 'employeeCode': '2330004379',
  29. 'agentCode': '33760031',
  30. 'brokerCode': '',
  31. 'secondLevelDepartmentCode': '233',
  32. 'abroadCommercialFlag': False,
  33. 'containQtAndApply': '0',
  34. 'vehicleFrameNo': self.vin,
  35. 'timeStamp': sign[2],
  36. 'nonce': sign[0],
  37. 'sign': sign[1],
  38. }
  39. response = requests.post('https://icorepnbs.pingan.com.cn/icore_pnbs/do/quote/quickSearchx9m24g',cookies=self.cookies,headers=self.headers,json=json_data,)
  40. if response.json().get('policy'):
  41. for i in response.json().get('policy'):
  42. # print(i)
  43. if i.get('planCode')=='PL0100003':
  44. pl0100003PolicyNo=i.get('policyNo')
  45. pl0100003ApplyPolicyNo = i.get('applyPolicyNo')
  46. elif i.get('planCode')=='PL0100C51':
  47. pl0100c51PolicyNo = i.get('policyNo')
  48. pl0100c51ApplyPolicyNo = i.get('applyPolicyNo')
  49. sign1 = self.get_sign()
  50. json_data = {
  51. 'departmentCode': '23388',
  52. 'secondLevelDepartmentCode': '233',
  53. 'saleAgentCode': '2330004379',
  54. 'businessSourceCode': '2',
  55. 'businessSourceDetailCode': '3',
  56. 'channelSourceCode': '9',
  57. 'channelSourceDetailCode': 'V',
  58. 'productCode': '',
  59. 'bidFlag': '0',
  60. 'planCode': 'PL0100003',
  61. 'usageAttributeCode': '02',
  62. 'ownershipAttributeCode': '03',
  63. 'isSelectDriver': 0,
  64. 'insuredNumber': 1,
  65. 'voucherType': '1',
  66. 'isFromCNBS': '0',
  67. 'nbaHotshot': 'nbaHotshot',
  68. 'personnelFlag': '1',
  69. 'pl0100003PolicyNo': pl0100003PolicyNo,
  70. 'pl0100003ApplyPolicyNo': pl0100003ApplyPolicyNo,
  71. 'pl0100c51PolicyNo': pl0100c51PolicyNo,
  72. 'pl0100c51ApplyPolicyNo': pl0100c51ApplyPolicyNo,
  73. 'rateClassFlag': '20',
  74. 'insuranceType': '1',
  75. 'timeStamp': sign1[2],
  76. 'nonce': sign1[0],
  77. 'sign': sign1[1],
  78. }
  79. response = requests.post('https://icorepnbs.pingan.com.cn/icore_pnbs/do/app/quotation/quickSearchVoucher',
  80. cookies=self.cookies,
  81. headers=self.headers,
  82. json=json_data,
  83. )
  84. # print(111,response.text)
  85. kind_list=[]
  86. riskList=[]
  87. jq_endday=response.json().get('voucher').get('c51BaseInfo')
  88. sy_endday=response.json().get('voucher').get('c01BaseInfo')
  89. syxlist=response.json().get('voucher').get('c01DutyList')
  90. jqxlist=response.json().get('voucher').get('c51DutyList')
  91. if syxlist:
  92. for i in syxlist:
  93. name=i.get('dutyName')
  94. Amount=i.get('insuredAmount')
  95. if name=='机动车损失保险':
  96. code='A'
  97. elif name=='机动车第三者责任保险':
  98. code='B'
  99. elif name=='机动车车上人员责任保险(司机)':
  100. code='D3'
  101. elif name=='机动车车上人员责任保险(乘客)':
  102. code='D4'
  103. kind_list.append({
  104. "amount": Amount,
  105. "kindCode": code,
  106. "kindName": name
  107. })
  108. if jqxlist:
  109. riskList.append({
  110. "amount": 200000,
  111. "kindCode": "0507",
  112. 'startDate':jq_endday.get('insuranceBeginTime'),
  113. 'endDate': jq_endday.get('insuranceEndTime'),
  114. })
  115. if kind_list:
  116. riskList.append({
  117. "kindCode": "0510",
  118. 'startDate': sy_endday.get('insuranceBeginTime'),
  119. 'endDate': sy_endday.get('insuranceEndTime'),
  120. })
  121. return {
  122. 'code':200,
  123. 'kindList':kind_list,
  124. 'riskList':riskList,
  125. }
  126. else:
  127. return {
  128. 'code':400,
  129. 'message':'暂无续保信息'
  130. }
  131. def main(self):
  132. return self.get_info()
  133. if __name__ == '__main__':
  134. pa_xb=PA_xubao('DHJWA-87743', 'TIANqin2022','JTJBAMCA0K2083676')
  135. aa=pa_xb.main()
  136. print(aa)