Commit 951cc933 by baiquan

修改测试代理方式

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