#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by Charles on 19-3-15
import os
import traceback
import shutil
import time
import base64
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from config import logger
from executor.utils.facebook_captcha import CaptchaVerify
from executor.utils.normal_captcha import NormalVerify
from executor.utils.utils import get_photo
from executor.web_actions import WebActions
class FacebookExceptionProcessor(BaseException, WebActions):
"""
Facebook异常处理类, 包括异常码的定义、异常检测与处理
"""
"""
:MAP_EXP_PROCESSOR:
异常分类--
-1: 未知异常
0: 是否首页
1: 是否记住密码提示
2: 是否输入电话号码提示
3: 是否上传头像提示,
4: 是否下载app提示
5: 账号被停用提示
6: 身份验证类型二,跳转按钮
7: 手机短信验证
8: 上传上传图片验证
9: 身份验证类型一,跳转按钮
10:登录 邮箱数字验证码验证
11: 登录 手机短信验证码验证
12:账号密码不正确
13:移动端共享登录验证
14: 条款和使用政策验证
15: 机器人验证
16: 文字验证码验证
"""
MAP_EXP_PROCESSOR = {
-1: {'name': 'unknown'},
0: {'name': 'home',
'key_words': {'mobile': {"css": ['div[id="MComposer"]'], "xpath": []},
"pc": {"css": ['input[data-testid="search_input"]']}}},
1: {'name': 'remember_password',
'key_words': {"mobile": {"css": ['a[href^="/login/save-device/cancel/?"]', 'button[type="submit"]']},
"pc": {"css": []}}},
2: {'name': 'save_phone_number',
'key_words': {"mobile": {"css": ['div[data-sigil="mChromeHeaderRight"]']},
"pc": {"css": []}}},
3: {'name': 'upload_photo',
'key_words': {"mobile": {"css": ['div[data-sigil="mChromeHeaderRight"]']},
"pc": {"css": []}}},
4: {'name': 'download_app',
'key_words': {"mobile": {"css": ['div[data-sigil="mChromeHeaderRight"]']},
"pc": {"css": []}}},
5: {'name': 'account_invalid',
'key_words': {"mobile": {"css": ['div[class^="mvm uiP fsm"]']},
"pc": {"css": ['button[name="submit[Download Your Information]"]']}},
'account_status': 'invalid'},
6: {'name': 'auth_button_two_verify',
'key_words': {"mobile": {"css": ('button[name="submit[Continue]', 'div[id="checkpoint_subtitle"]')},
"pc": {"css": ['button[name^="submit[Secure Account]"]']}},
'account_status': 'verifying_auth_button_two'},
7: {'name': 'phone_sms_verify',
'key_words': {"mobile": {"css": ['option[value="US"]']},
"pc": {"css": ('input[name="phone-name"]', 'input[name="p_c"]')}},
'account_status': 'verifying_sms'},
8: {'name': 'photo_verify',
'key_words': {"mobile": {"css": ['input[name="photo-input"]', 'input[id="photo-input"]']},
"pc": {"css": ['input[name="photo-input"]', 'input[id="photo-input"]']}},
'account_status': 'verifying_photo'},
9: {'name': 'auth_button_one_verify',
'key_words': {"mobile": {"css": ['button[name="submit[Secure Account]"]']},
"pc": {"css": []}},
'account_status': 'verifying_auth_button_one'},
10: {'name': 'email_verify',
'key_words': {"mobile": {"css": ['input[placeholder="######"]']},
"pc": {"css": ['input[placeholder="######"]']}},
'account_status': 'verifying_email_code'},
11: {'name': 'sms_verify',
'key_words': {"mobile": {"css": ['input[name="p_c"]']},
"pc": {"css": []}},
'account_status': 'verifying_sms_code'},
12: {'name': 'wrong_password',
'key_words': {"mobile": {"css": ['a[href^="/recover/initiate/?ars=facebook_login_pw_error&lwv"]']},
"pc": {"css": ['a[class="accessible_elem layer_close_elem"]']}},
'account_status': 'verifying_wrong_password'},
13: {'name': 'shared_login',
'key_words': {"mobile": {"css": ['a[href^="https://facebook.com/mobile/click/?redir_url=https"]']},
"pc": {"css": []}},
'account_status': 'verifying_shared_login'},
14: {'name': 'policy_clause',
'key_words': {"mobile": {"css": ['button[value="J’accepte"]']},
"pc": {"css": []}},
'account_status': 'verifying_policy_clause'},
15: {"name": 'robot_verify',
'key_words': {"mobile": {"css": ['div[class="g-recaptcha"]'], 'iframe': ["captcha-recaptcha"]},
"pc": {"css": ['div[class="g-recaptcha"]'], 'iframe': ["captcha-recaptcha"]}},
'account_status': 'verifying_robot'},
16: {"name": 'code_verify',
'key_words': {"pc": {"css": ['input[id="captcha_persist_data"]']}},
"mobile": {"css": []},
'account_status': 'verifying_code'},
}
def __init__(self, driver: WebDriver, env="mobile", account="", gender=1):
self.driver = driver
self.exception_type = -1
self.env = env
tac = traceback.extract_stack()
self.caller = tac[-2][2]
self.account = account
self.gender = gender
self.trace_info = "[{}:env={}, caller={}, account={}]".format(
self.__class__.__name__, self.env, self.caller, self.account)
@property
def exception_name(self):
return self.MAP_EXP_PROCESSOR.get(self.exception_type, {}).get('name', 'unknown')
@property
def account_status(self):
return self.MAP_EXP_PROCESSOR.get(self.exception_type, {}).get('account_status', '')
def get_key_words(self, code, category='css', index=0):
"""
根据异常码返回其关键字,
:param code: 异常码
:param category: 关键字类别, 可以为空,为空时返回正个keywords字典.
:param index: 关键字索引, 小于零时反回整个关键字列表
:return: 关键字(列表)
"""
keywords_dict = self.MAP_EXP_PROCESSOR.get(code, {}).get('key_words', {}).get(self.env, {})
if category:
if index >= 0:
return keywords_dict.get(category, [])[index]
else:
return keywords_dict.get(category, [])
else:
return keywords_dict
def auto_process(self, retry=1, wait=3):
"""
自动处理异常,根据异常类型对症处理,
:param retry: 重试次数
:param wait: 重试间隔,单位秒
:return: 元组 -- (结果, 异常码)
"""
logger.info('call auto process, retry={}, wait={}, trace_info={}'.format(retry, wait, self.trace_info))
while retry > 0:
self.exception_type = self.auto_check()
# 如果已经在home页面或者是未知异常,不用处理
if self.exception_type == 0:
logger.info('auto process succeed, status==0')
return True, 0
elif self.exception_type == -1:
logger.info('auto process failed, status==-1')
return False, -1
processor = 'process_{}_{}'.format(self.exception_name, self.env)
if hasattr(self, processor):
ret, status = getattr(self, processor)()
else:
logger.error('auto_process can not find processor. processor={}'.for
没有合适的资源?快使用搜索试试~ 我知道了~
毕设&课程作业_Facebook自动养号系统,分布式部署。.zip
共2000个文件
js:1200个
css:364个
html:174个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 182 浏览量
2024-01-31
14:53:09
上传
评论
收藏 20.23MB ZIP 举报
温馨提示
计算机类毕业设计、课程作业,系统源码!!!
资源推荐
资源详情
资源评论
收起资源包目录
毕设&课程作业_Facebook自动养号系统,分布式部署。.zip (2000个子文件)
bootstrap.css 143KB
bootstrap.min.css 119KB
AdminLTE.css 109KB
AdminLTE.min.css 89KB
AdminLTE-without-plugins.css 88KB
AdminLTE-without-plugins.min.css 72KB
ionicons.css 56KB
ionicons.min.css 50KB
_all-skins.css 47KB
_all-skins.min.css 41KB
font-awesome.css 37KB
jquery-ui.css 35KB
jquery-ui.css 35KB
jquery-ui.css 35KB
jquery-ui.css 35KB
jquery-ui.css 35KB
jquery-ui.css 35KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
jquery-ui.css 34KB
font-awesome.min.css 30KB
jquery-ui.min.css 30KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
jquery-ui.min.css 29KB
bootstrap-theme.css 25KB
bootstrap-datepicker3.standalone.css 23KB
bootstrap-theme.min.css 23KB
bootstrap-datepicker3.css 22KB
bootstrap-datepicker3.standalone.min.css 21KB
_all.css 21KB
bootstrap-datepicker3.min.css 21KB
bootstrap-datepicker.standalone.css 18KB
theme.css 17KB
select2.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
theme.css 17KB
bootstrap-datepicker.css 17KB
theme.css 17KB
bootstrap-datepicker.standalone.min.css 16KB
bootstrap-datepicker.min.css 15KB
AdminLTE-bootstrap-social.css 15KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
学术菜鸟小晨
- 粉丝: 1w+
- 资源: 4941
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功