| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- 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
|