|
|
@@ -0,0 +1,170 @@
|
|
|
+import json
|
|
|
+import time
|
|
|
+import requests
|
|
|
+import re
|
|
|
+from bs4 import BeautifulSoup
|
|
|
+import execjs
|
|
|
+from log import PPLogger
|
|
|
+
|
|
|
+class YiDun():
|
|
|
+ def __init__(self):
|
|
|
+ self.logger = PPLogger(name='yidun_verify')
|
|
|
+ self.logger.setup_logger()
|
|
|
+
|
|
|
+ def verify(self, session, url1):
|
|
|
+ try:
|
|
|
+ with open('./verify/yidun.js', 'r', encoding='utf8') as f:
|
|
|
+ jscode = f.read()
|
|
|
+ self.logger.info('yidun-verify')
|
|
|
+ # session = requests.Session()
|
|
|
+ headers = {
|
|
|
+ "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
|
|
|
+ "accept-encoding": "gzip, deflate, br",
|
|
|
+ "accept-language": "zh-CN,zh;q=0.9",
|
|
|
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36"
|
|
|
+ }
|
|
|
+ # url1 = 'https://callback.58.com/antibot/verifycode?serialId=d7026297c2c26f8550dd61e011b05a13_e3df224043e941b197ac36b476201772&code=300&sign=5de1e434335d349a2a2bc187ff886a4f&namespace=fangchan_business_pc&url=https%253A%252F%252Fqd.58.com%252Flicang%252Fshangpucz%252Fpn1%252F%253Farea%253D100_300%2526huansuanyue%253D0_10000'
|
|
|
+ res1 = session.get(url1, headers=headers)
|
|
|
+ soup1 = BeautifulSoup(res1.text, 'lxml')
|
|
|
+ serialid = soup1.find('input', attrs={'id': "serialId"}).attrs['value']
|
|
|
+ sign = soup1.find('input', attrs={'id': "sign"}).attrs['value']
|
|
|
+ url = soup1.find('input', attrs={'id': "url"}).attrs['value']
|
|
|
+ # print(url)
|
|
|
+
|
|
|
+ url2 = f'https://callback.58.com/antibot/yidun/register.do?t={int(time.time() * 1000)}'
|
|
|
+ data2 = {
|
|
|
+ "serialId": serialid,
|
|
|
+ "code": "300",
|
|
|
+ "sign": sign,
|
|
|
+ "url": url,
|
|
|
+ "namespace": "fangchan_business_pc"
|
|
|
+ }
|
|
|
+ headers2 = {
|
|
|
+ "accept": "*/*",
|
|
|
+ "accept-encoding": "gzip, deflate, br",
|
|
|
+ "accept-language": "zh-CN,zh;q=0.9",
|
|
|
+ "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
|
+ "origin": "https://callback.58.com",
|
|
|
+ "referer": url1,
|
|
|
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36",
|
|
|
+ "x-requested-with": "XMLHttpRequest"
|
|
|
+ }
|
|
|
+ res2 = session.post(url2, headers=headers2, data=data2)
|
|
|
+ self.logger.info(res2.text)
|
|
|
+ res2_data = res2.json()['data']
|
|
|
+
|
|
|
+ url3 = 'https://c.dun.163.com/api/v2/getconf'
|
|
|
+ params3 = {
|
|
|
+ "referer": "https://callback.58.com/antibot/verifycode",
|
|
|
+ "zoneId": "",
|
|
|
+ "id": res2_data,
|
|
|
+ "ipv6": "false",
|
|
|
+ "runEnv": "10",
|
|
|
+ "iv": "4",
|
|
|
+ "loadVersion": "2.4.0",
|
|
|
+ "lang": "zh-CN",
|
|
|
+ "callback": "__JSONP_xsv67jt_0"
|
|
|
+ }
|
|
|
+ header3 = {
|
|
|
+ "Accept": "*/*",
|
|
|
+ "Accept-Encoding": "gzip, deflate, br",
|
|
|
+ "Accept-Language": "zh-CN,zh;q=0.9",
|
|
|
+ "Connection": "keep-alive",
|
|
|
+ "Host": "c.dun.163.com",
|
|
|
+ "Referer": "https://callback.58.com/",
|
|
|
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36"
|
|
|
+ }
|
|
|
+ res3 = session.get(url3, headers=header3, params=params3)
|
|
|
+ res3_json = json.loads(re.search('\{.*\}', res3.text).group())
|
|
|
+ ac_token = res3_json['data']['ac']['token']
|
|
|
+ dt = res3_json['data']['dt']
|
|
|
+
|
|
|
+ url4 = 'https://c.dun.163.com/api/v3/get'
|
|
|
+ fp = execjs.compile(jscode).call('get_fp')
|
|
|
+ cb = execjs.compile(jscode).call('get_cb')
|
|
|
+ params4 = {
|
|
|
+ "referer": "https://callback.58.com/antibot/verifycode",
|
|
|
+ "zoneId": "CN31",
|
|
|
+ "dt": dt,
|
|
|
+ "id": res2_data,
|
|
|
+ "fp": fp,
|
|
|
+ "https": "true",
|
|
|
+ "type": "undefined",
|
|
|
+ "width": "",
|
|
|
+ "sizeType": "undefined",
|
|
|
+ "version": "2.27.2",
|
|
|
+ "dpr": "1",
|
|
|
+ "dev": "1",
|
|
|
+ "cb": cb,
|
|
|
+ "acToken": "",
|
|
|
+ "ipv6": "false",
|
|
|
+ "runEnv": "10",
|
|
|
+ "group": "",
|
|
|
+ "scene": "",
|
|
|
+ "sdkVersion": "undefined",
|
|
|
+ "iv": "4",
|
|
|
+ "smsVersion": "v3",
|
|
|
+ "callback": "__JSONP_65el8vu_0"
|
|
|
+ }
|
|
|
+ res4 = session.get(url4, headers=header3, params=params4)
|
|
|
+ res4_json = json.loads(re.search('\{.*\}', res4.text).group())
|
|
|
+ token = res4_json['data']['token']
|
|
|
+
|
|
|
+ url5 = 'https://c.dun.163.com/api/v3/check'
|
|
|
+ headers5 = {
|
|
|
+ "Accept": "*/*",
|
|
|
+ "Accept-Encoding": "gzip, deflate, br",
|
|
|
+ "Accept-Language": "zh-CN,zh;q=0.9",
|
|
|
+ "Connection": "keep-alive",
|
|
|
+ "Host": "c.dun.163.com",
|
|
|
+ "Referer": "https://callback.58.com/",
|
|
|
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36"
|
|
|
+ }
|
|
|
+ data = execjs.compile(jscode).call('get_data', token)
|
|
|
+ params5 = {
|
|
|
+ "referer": "https://callback.58.com/antibot/verifycode",
|
|
|
+ "zoneId": "CN31",
|
|
|
+ "dt": dt,
|
|
|
+ "id": res2_data,
|
|
|
+ "version": "2.27.2",
|
|
|
+ "cb": cb,
|
|
|
+ "extraData": "",
|
|
|
+ "bf": "0",
|
|
|
+ "runEnv": "10",
|
|
|
+ "sdkVersion": "undefined",
|
|
|
+ "iv": "4",
|
|
|
+ "token": token,
|
|
|
+ "type": "5",
|
|
|
+ "width": "240",
|
|
|
+ "data": data,
|
|
|
+ "callback": '__JSONP_4oixuod_1'
|
|
|
+ }
|
|
|
+ res5 = session.get(url5, headers=headers5, params=params5)
|
|
|
+ res5_json = json.loads(re.search('\{.*\}', res5.text).group())
|
|
|
+ validate = res5_json['data']['validate']
|
|
|
+
|
|
|
+ url6 = 'https://callback.58.com/antibot/yidun/checkcode.do'
|
|
|
+ headers6 = {
|
|
|
+ "accept": "*/*",
|
|
|
+ "accept-encoding": "gzip, deflate, br",
|
|
|
+ "accept-language": "zh-CN,zh;q=0.9",
|
|
|
+ "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
|
+ "origin": "https://callback.58.com",
|
|
|
+ "pragma": "no-cache",
|
|
|
+ "referer": url1,
|
|
|
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36"
|
|
|
+ }
|
|
|
+ validate6 = execjs.compile(jscode).call('get_validate', fp, validate)
|
|
|
+ data6 = {
|
|
|
+ "namespace": "fangchan_business_pc",
|
|
|
+ "url": url,
|
|
|
+ "serialId": serialid,
|
|
|
+ "validate": validate6
|
|
|
+ }
|
|
|
+ res6 = session.post(url6, headers=headers6, data=data6)
|
|
|
+ self.logger.info(res6.text)
|
|
|
+ url7 = res6.json()['msg']
|
|
|
+ session.get(url7, headers=headers)
|
|
|
+ except Exception as e:
|
|
|
+ self.logger.error(e)
|
|
|
+ return session
|