Commit 951cc933 by baiquan

修改测试代理方式

parent 6eed9c86
......@@ -13,10 +13,11 @@ from errors import *
def setup_proxy(proxy_url):
session = requests.Session()
# 配置 SOCKS5 代理 + 远程 DNS 解析
session.proxies = {
proxies = {
"http": proxy_url,
"https": proxy_url
}
session.proxies = proxies
addr = proxy_url.split('@')[1].split(':')[0]
# 配置重试机制
retries = Retry(
......@@ -39,13 +40,14 @@ def setup_proxy(proxy_url):
timeout=15,
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'}
, proxies=proxies
)
if test_res.status_code == 200:
logging.info("业务域名连通性验证成功")
test_res = session.get('http://httpbin.org/ip', timeout=10).json()
test_res = session.get('http://httpbin.org/ip', timeout=10, proxies=proxies).json()
if test_res['origin'] == addr:
logging.info(f"代理验证成功")
return session
return proxies
else:
raise AppError(msg="代理验证失败")
else:
......@@ -85,8 +87,8 @@ def get_access_key(fp_id, app_key, device_id):
access_key = obj.hexdigest()
return access_key
def update_callback_cookies(cookies, headers, redirect_url, session):
callback_res = session.get(redirect_url, cookies=cookies, headers=headers, allow_redirects=False)
def update_callback_cookies(cookies, headers, redirect_url, proxies):
callback_res = requests.get(redirect_url, cookies=cookies, headers=headers, allow_redirects=False, proxies=proxies)
return update_cookies(callback_res.cookies, cookies)
def get_account_sdk_source_info():
......
import logging
from urllib.parse import urlencode
import requests
from common import get_account_sdk_source_info, get_ms_token, encryptParams, encryptParamsId, update_cookies, \
update_callback_cookies, setup_proxy
from dy_verify import mouse_verify
def get_callback_cookies(login_cookies, headers, encrypt_params, session):
def get_callback_cookies(login_cookies, headers, encrypt_params, proxies):
account_sdk_source_info = get_account_sdk_source_info()
check_login_params = {
'fp': encrypt_params['fp'],
......@@ -21,7 +23,7 @@ def get_callback_cookies(login_cookies, headers, encrypt_params, session):
}
x_bogus_url = 'https://doudian-sso.jinritemai.com/aff/check_login/' + "?" + urlencode(check_login_params)
check_login_url = x_bogus_url + f'&signature=_02B4Z6wo00001k1CzegAAIDCemYJt5a7r6JNQslAAPSgmx8MO5UrYu5YW6SCdzCrIIqaFJbM6j62JJU3g5yarKiSx7EgoKdBA92pBjYFVyjR9yIxwEceUkyEGviysE59DRUIWFyx3Akm0kWcbc'
check_login_res = session.get(check_login_url, cookies=login_cookies, headers=headers)
check_login_res = requests.get(check_login_url, cookies=login_cookies, headers=headers, proxies=proxies)
login_subject_uid = check_login_res.json()['login_list'][0]['login_subject_uid']
user_identity_id = check_login_res.json()['login_list'][0]['user_identity_list'][0]['user_identity_id_str']
encrypt_obj = encryptParamsId(login_subject_uid, user_identity_id)
......@@ -37,7 +39,7 @@ def get_callback_cookies(login_cookies, headers, encrypt_params, session):
'user_identity_id': encrypt_obj['user_identity_id'],
}
ticket_url = f"https://doudian-sso.jinritemai.com/aff/subject/login/?subject_aid=4966&fp={encrypt_params['fp']}&aid=4272&language=zh&account_sdk_source=web&account_sdk_source_info={account_sdk_source_info}&msToken={get_ms_token()}"
ticket_res = session.post(ticket_url, cookies=login_cookies, headers=headers, data=ticket_data)
ticket_res = requests.post(ticket_url, cookies=login_cookies, headers=headers, data=ticket_data, proxies=proxies)
cookies = update_cookies(ticket_res.cookies, login_cookies)
ticket = ticket_res.json()['redirect_url'].split('ticket=')[-1]
redirect_params = {
......@@ -48,8 +50,8 @@ def get_callback_cookies(login_cookies, headers, encrypt_params, session):
'login_member': '1',
'_lid': '312003629857',
}
redirect_res = session.get('https://fxg.jinritemai.com/index/login', params=redirect_params, cookies=cookies,
headers=headers,allow_redirects=False)
redirect_res = requests.get('https://fxg.jinritemai.com/index/login', params=redirect_params, cookies=cookies,
headers=headers,allow_redirects=False, proxies=proxies)
redirect_url = redirect_res.headers.get('Location')
params = {
'login_source': 'doudian_pc_web',
......@@ -58,9 +60,9 @@ def get_callback_cookies(login_cookies, headers, encrypt_params, session):
'entry_source': '0',
'ecom_login_extra': '',
}
cookies = update_callback_cookies(cookies, headers, redirect_url, session)
callback_res = session.get('https://fxg.jinritemai.com/ecomauth/loginv1/callback', params=params, cookies=cookies,
headers=headers, verify=False)
cookies = update_callback_cookies(cookies, headers, redirect_url, proxies)
callback_res = requests.get('https://fxg.jinritemai.com/ecomauth/loginv1/callback', params=params, cookies=cookies,
headers=headers, verify=False, proxies=proxies)
logging.info(f"-------- get_callback_cookies: cookies获取成功!--------")
return update_cookies(callback_res.cookies, cookies)
......@@ -71,7 +73,7 @@ def login(account, password, headers, proxies):
username = proxies['username']
proxies_password = proxies['password']
proxy_url = f"socks5h://{username}:{proxies_password}@{addr}:{port}"
session = setup_proxy(proxy_url)
proxies = setup_proxy(proxy_url)
encrypt_params = encryptParams(account, password)
login_params = {
'fp': encrypt_params['fp'],
......@@ -95,7 +97,7 @@ def login(account, password, headers, proxies):
'redirect_sso_to_login': encrypt_params['redirect_sso_to_login'],
}
login_res = session.post(login_url, headers=headers, data=data, verify=False)
login_res = requests.post(login_url, headers=headers, data=data, proxies=proxies, verify=False)
if login_res.json()['error_code'] == 2046:
logging.info(f"-------- login: 登录失败!--------")
logging.info(f"-------- login: {login_res.json()['description']}--------")
......@@ -114,7 +116,7 @@ def login(account, password, headers, proxies):
mouse_verify(encrypt_params['fp'], verify_center_decision_conf)
except:
continue
login_res = session.post(login_url, headers=headers, data=data, verify=False)
login_res = requests.post(login_url, headers=headers, data=data, proxies=proxies, verify=False)
if login_res.json()['description'] != '滑动滑块进行验证':
logging.info(f"-------- login_verify: 滑块处理成功!--------")
break
......@@ -122,5 +124,5 @@ def login(account, password, headers, proxies):
logging.error(f"-------- login_verify: 处理滑块失败!--------")
logging.error(f"-------- login: 登录失败!--------")
return None
return dict(get_callback_cookies(login_res.cookies, headers, encrypt_params, session))
return dict(get_callback_cookies(login_res.cookies, headers, encrypt_params, proxies))
......@@ -170,7 +170,7 @@ async def createTemplate(cookies, template_params, proxies):
username = proxies['username']
proxies_password = proxies['password']
proxy_url = f"socks5h://{username}:{proxies_password}@{addr}:{port}"
session = setup_proxy(proxy_url)
proxies = setup_proxy(proxy_url)
params = {
'appid': '1',
'aid': '4272',
......@@ -570,7 +570,7 @@ async def createTemplate(cookies, template_params, proxies):
}
logger.info(rule_list)
url = 'https://fxg.jinritemai.com/freight/template/createTemplate'
response = session.post(url, params=params, cookies=cookies, headers=HEADERS, json=json_data).json()
response = requests.post(url, params=params, cookies=cookies, headers=HEADERS, json=json_data, proxies=proxies).json()
logger.info(response)
if response['code'] != 0:
msg = response.get('msg', '')
......
......@@ -4,6 +4,7 @@ import os
from urllib.parse import urlencode
import execjs
import requests
from celery import shared_task
from loguru import logger
......@@ -224,8 +225,8 @@ def execute_get_schema(headers: dict, proxy_url: str, category_id: str):
'error_type': ''
}
params['a_bogus'] = res['data']
session = setup_proxy(proxy_url)
response = session.post(url, params=params, headers=headers, json=json_data, verify= False)
proxies = setup_proxy(proxy_url)
response = requests.post(url, params=params, headers=headers, json=json_data, verify=False, proxies=proxies)
if response.text and response.json().get('code') == 0:
result = response.json().get('data', {})
return {
......
......@@ -41,7 +41,6 @@ def download_video(url: str, file_: str,headers: dict):
"""
下载视频
:param proxies:
:param headers:
:param url: 视频地址
:param file_: 文件地址
......@@ -223,7 +222,6 @@ class AWSV4Signer:
class Upload:
def __init__(self, task):
self.session = None
self.slices = None
self.session_key = None
self.upload_id = None
......@@ -257,7 +255,7 @@ class Upload:
'appid': '1',
}
url = f'https://fxg.jinritemai.com/product/video/uploadVideoToken'
response = self.session.get(url, cookies=self.cookies, headers=headers, params=params)
response = requests.get(url, cookies=self.cookies, headers=headers, params=params, proxies=self.proxies)
upload_token = response.json()['data']
if upload_token:
return upload_token
......@@ -304,7 +302,7 @@ class Upload:
}
headers = {**headers, **self.headers}
response = self.session.get('https://vod.bytedanceapi.com/', params=params,cookies=self.cookies, headers=headers, timeout=5)
response = requests.get('https://vod.bytedanceapi.com/', params=params,cookies=self.cookies, headers=headers, timeout=5, proxies=self.proxies)
upload_data = response.json()
upload_nodes = upload_data['Result']['InnerUploadAddress']['UploadNodes']
if upload_nodes:
......@@ -343,7 +341,7 @@ class Upload:
'phase': 'init',
}
url = f'https://tos-d-ct-lf.snssdk.com/{store_uri}?uploads'
response = self.session.post(url, params=params ,cookies=self.cookies, headers=headers, timeout=5)
response = requests.post(url, params=params ,cookies=self.cookies, headers=headers, timeout=5, proxies=self.proxies)
upload_id = response.json()['payload']['uploadID']
if upload_id:
return upload_id, session_key, auth, store_uri
......@@ -388,7 +386,7 @@ class Upload:
}
data = chunks[slice_['part_offset']]
url = f'https://tos-d-ct-lf.snssdk.com/{store_uri}'
response = self.session.post(url, headers=headers,cookies=self.cookies, data=data, params=params, timeout=60)
response = requests.post(url, headers=headers,cookies=self.cookies, data=data, params=params, timeout=60, proxies=self.proxies)
if response.json()['success'] == 0 and response.text:
return response
......@@ -423,7 +421,7 @@ class Upload:
data = ','.join([f"{s['part_number']}:{s['crc32']}" for s in self.slices])
url = f'https://tos-d-ct-lf.snssdk.com/{store_uri}'
response = self.session.post(url, params=params,cookies=self.cookies, headers=headers, data=data, timeout=5)
response = requests.post(url, params=params,cookies=self.cookies, headers=headers, data=data, timeout=5, proxies=self.proxies)
if response.json()['success'] == 0:
return response
......@@ -471,8 +469,8 @@ class Upload:
'x-amz-security-token': self.session_token,
}
headers = {**headers, **self.headers}
response = self.session.post('https://vod.bytedanceapi.com/',cookies=self.cookies, params=params, headers=headers,
data=data, timeout=5)
response = requests.post('https://vod.bytedanceapi.com/',cookies=self.cookies, params=params, headers=headers,
data=data, timeout=5, proxies=self.proxies)
logger.info(response.text)
if response.json()['Result']['Results'][0]:
return response.json()['Result']['Results'][0]
......@@ -497,7 +495,7 @@ class Upload:
'appid': 1,
}
url = 'https://fxg.jinritemai.com/product/video/changeVideoStatus'
response = self.session.post(url, params=params, cookies=self.cookies, headers=self.headers, json=json_data)
response = requests.post(url, params=params, cookies=self.cookies, headers=self.headers, json=json_data, proxies=self.proxies)
logger.info(response.text)
def get_upload_video_info(self, video_id):
......@@ -506,7 +504,7 @@ class Upload:
:return:
"""
play_auth_token = self.get_upload_token(video_id)['play_auth_token']
response = self.session.get(f'https://vod.bytedanceapi.com/?{play_auth_token}', headers=self.headers, cookies=self.cookies, timeout=5)
response = requests.get(f'https://vod.bytedanceapi.com/?{play_auth_token}', headers=self.headers, cookies=self.cookies, timeout=5, proxies=self.proxies)
logger.info(response.text)
if response.json()['Result']['Data']['Status'] != 10:
raise Exception('上传视频失败')
......@@ -524,8 +522,8 @@ class Upload:
username = proxies['username']
proxies_password = proxies['password']
proxy_url = f"socks5h://{username}:{proxies_password}@{addr}:{port}"
session = setup_proxy(proxy_url)
self.session = session
proxies = setup_proxy(proxy_url)
self.proxies = proxies
self.file_size = os.path.getsize(self.file_path_)
logger.info("开始获取上传token")
upload_token = self.get_upload_token()['auth_token']
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment