def registers(self, present_website, VPN): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 获取邮箱 email_and_passwd = get_email(present_website) if email_and_passwd == -1: self.failed_count = self.failed_count + 1 continue retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 registerData = self.__register_one(Session, present_website, email_and_passwd) if registerData == -1: g_var.logger.info("代理错误") self.proxy_err_count = self.proxy_err_count + 1 proxies = ip_proxy(VPN) if proxies == {"error": -1}: g_var.logger.info("获取代理错误") self.failed_count = self.failed_count + 1 Session.proxies = proxies elif registerData == -2: g_var.logger.info("注册失败,可能是邮箱密码不符合要求、或ip被封等原因,请排查!") self.proxy_err_count = self.proxy_err_count + 1 proxies = ip_proxy(VPN) if proxies == {"error": -1}: g_var.logger.info("获取代理错误") self.failed_count = self.failed_count + 1 Session.proxies = proxies elif registerData == 0: # 注册成功,但激活失败 g_var.logger.info("注册成功,但激活失败!") break else: # 注册成功 self.success_count = self.success_count + 1 self.failed_count = 0 self.proxy_err_count = 0 break time.sleep(g_var.SLEEP_TIME) if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = "连续注册出错,程序停止" g_var.logger.error("连续注册失败!程序停止") break g_var.logger.info("g_var.SPIDER_STATUS" + str(g_var.SPIDER_STATUS)) g_var.logger.info("本线程共成功注册'self.success_count'=" + str(self.success_count) + "个账户")
def registers(self, present_website: str, VPN: str): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue email_and_passwd = get_email(present_website) if email_and_passwd == -1: self.failed_count = self.failed_count + 1 continue retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 registerData = self.__register_one(Session, present_website, email_and_passwd) if registerData == 0: g_var.logger.info("注册失败,报错原因需要更换邮箱,跳出本循环") self.failed_count = self.failed_count + 1 break elif registerData == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理连续错误") retry_count = g_var.RETRY_COUNT_MAX elif registerData == -2: g_var.logger.info("注册失败,可能是邮箱密码不符合要求等原因,邮箱可以继续使用,不跳出循环") self.failed_count = self.failed_count + 1 continue else: # 注册成功 self.success_count = self.success_count + 1 self.failed_count = 0 break time.sleep(g_var.SLEEP_TIME) if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续注册出错,程序停止" g_var.logger.error("连续注册失败!程序停止") break g_var.logger.info("g_var.SPIDER_STATUS" + str(g_var.SPIDER_STATUS)) g_var.logger.info("本线程共成功注册'self.success_count'=" + str(self.success_count) + "个账户")
def registers(self, present_website, VPN): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 # 设置Session对象 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 registerData = self.__register_one(Session) if registerData != -1: # registerData != -1说明注册成功 self.success_count = self.success_count + 1 self.failed_count = 0 break else: g_var.logger.info("更换代理...") self.failed_count = self.failed_count + 1 proxies = ip_proxy(VPN) Session.proxies = proxies time.sleep(g_var.SLEEP_TIME) continue if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = "连续注册出错,程序停止" g_var.logger.error("register:连续注册失败!程序停止") break g_var.logger.info("g_var.SPIDER_STATUS" + str(g_var.SPIDER_STATUS)) g_var.logger.info("本线程共成功注册'self.success_count'=" + str(self.success_count) + "个账户")
def start(self, present_website, VPN): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 # 设置Session对象 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 1、注册 email_and_passwd = get_email(present_website) if email_and_passwd == -1: self.failed_count = self.failed_count + 1 continue retry_count = 0 register_signal = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 registerData = self.__register_one(Session, present_website, email_and_passwd) if registerData == 0: g_var.logger.info("注册失败,报错原因需要更换邮箱,跳出本循环") self.failed_count = self.failed_count + 1 register_signal = 1 break elif registerData == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif registerData == -2: g_var.logger.info("注册失败,可能是邮箱密码不符合要求等原因,邮箱可以继续使用,不跳出循环") self.failed_count = self.failed_count + 1 continue else: # 注册成功 self.failed_count = 0 break time.sleep(g_var.SLEEP_TIME) if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续注册出错,程序停止" g_var.logger.error("连续注册失败!程序停止") break if register_signal == 1: continue # 2、登录 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 构造一个userInfo userInfo: tuple = (registerData['id'], registerData['username'], registerData['password'], registerData['email'], '0', registerData['cookie']) login_signal = 0 # 记录状态,成功为0,失败为1 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 loginData = self.login(Session, present_website, VPN, userInfo) if loginData == 1: # 返回1表示登录失败,将数据库中的status改为异常 g_var.logger.info('使用当前账号密码登录失败。。。') sql = "UPDATE" + present_website + "SET status=1 WHERE id=" + str( userInfo[0]) + ";" status = MysqlHandler().update(sql) if status == -1: return -1 self.failed_count = self.failed_count + 1 login_signal = 1 break elif loginData == 0: self.failed_count = self.failed_count + 1 login_signal = 1 break elif loginData == -1: # 代理问题,更换代理 g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif loginData == -2: g_var.logger.info("登录失败,但可以使用此账户继续尝试,不跳出循环") self.failed_count = self.failed_count + 1 continue else: self.failed_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续登录出错,程序停止" g_var.logger.error("连续登录失败!程序停止") break if login_signal == 1: continue # 3、发文章 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: time.sleep(g_var.SLEEP_TIME) retry_count = retry_count + 1 status = self.__postMessage(Session, loginData, present_website) if status == 'ok': # 发文章成功 self.success_count = self.success_count + 1 self.failed_count = 0 break elif status == 1: sql = "UPDATE " + present_website + " SET cookie='' WHERE id=" + str( loginData['id']) + ";" status = MysqlHandler().update(sql) if status == 0: g_var.logger.info("cookie失效,清除cookie update OK") else: g_var.logger.error("数据库清除cookie错误!") self.failed_count = self.failed_count + 1 break elif status == 0: self.failed_count = self.failed_count + 1 break elif status == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif status == -2: self.failed_count = self.failed_count + 1 continue if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续发文章出错,程序停止" g_var.logger.error("连续发文章出错,程序停止") break g_var.logger.info("成功注册账户并发送文章" + str(self.success_count) + "篇")
def loginAndPostMessage(self, present_website, VPN: str): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 从数据库中获取用户信息 userInfo = generate_login_data(present_website) g_var.logger.info(userInfo) if userInfo == None: g_var.ERR_CODE = 2001 g_var.ERR_MSG = g_var.ERR_MSG + "无法获取proxy!" g_var.logger.error("数据库中获取用户失败,本线程停止!") return -1 # 1、登录 login_signal = 0 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 loginData = self.login(Session, present_website, VPN, userInfo) if loginData == 1: # 返回1表示登录失败,将数据库中的status改为异常 g_var.logger.info('使用当前账号密码登录失败。。。') sql = "UPDATE" + present_website + "SET status=1 WHERE id=" + str( userInfo[0]) + ";" status = MysqlHandler().update(sql) if status == -1: return -1 self.failed_count = self.failed_count + 1 login_signal = 1 break elif loginData == 0: self.failed_count = self.failed_count + 1 login_signal = 1 break elif loginData == -1: # 代理问题,更换代理 g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif loginData == -2: g_var.logger.info("登录失败,但可以使用此账户继续尝试,不跳出循环") self.failed_count = self.failed_count + 1 continue else: self.failed_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续登录出错,程序停止" g_var.logger.error("login:连续登录失败!程序停止") break if login_signal == 1: continue # 2、发文章 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: time.sleep(g_var.SLEEP_TIME) retry_count = retry_count + 1 status = self.__postMessage(Session, loginData, present_website) if status == 'ok': # 发文章成功 self.success_count = self.success_count + 1 self.failed_count = 0 break elif status == 1: sql = "UPDATE " + present_website + " SET cookie='' WHERE id=" + str( loginData['id']) + ";" status = MysqlHandler().update(sql) if status == 0: g_var.logger.info("cookie失效,清除cookie update OK") else: g_var.logger.error("数据库清除cookie错误!") self.failed_count = self.failed_count + 1 break elif status == 0: self.failed_count = self.failed_count + 1 break elif status == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif status == -2: self.failed_count = self.failed_count + 1 continue if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续发文章出错,程序停止" g_var.logger.error("连续发文章出错,程序停止") break g_var.logger.info("成功发送" + str(self.success_count) + "篇文章")
def start(self, present_website, VPN): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 # 设置Session对象 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 1、注册 retry_count = 0 register_signal = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 userData = self.__register_one(Session, present_website) if userData == -1: # 失败更换代理 g_var.ERR_CODE = 3003 g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif userData == -2: # 注册过程中出现失败! g_var.logger.info("注册过程中出现失败!") continue elif userData == 0: # 注册成功,但存库失败 g_var.logger.info("注册成功,但存库失败!") register_signal = 1 break else: # 说明注册成功 self.failed_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续注册出错,程序停止" g_var.logger.error("start:连续注册失败!程序停止") break if register_signal == 1: continue # 2、获取个人数据 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 personalData = self.__personal_data(Session, userData, VPN) if personalData == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif personalData == -2: # 获取用户资料过程中出现失败! g_var.logger.info("获取用户资料过程中出现失败!") continue else: self.failed_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续注册出错,程序停止" g_var.logger.error("login:连续登录失败!程序停止") break # 3、发链接 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 status = self.__postMessage(Session, userData, personalData, VPN) if status == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif status == -2: # 发送链接数据过程中出现失败! g_var.logger.info("发送链接数据过程中出现失败!") continue elif status == 0: # 链接数据存库失败 g_var.logger.info("注册成功,但存库失败!") register_signal = 1 break else: self.success_count += 1 self.failed_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续发链接出错,程序停止" g_var.logger.error("连续发链接出错,程序停止") break g_var.logger.info("成功注册账户并发送链接" + str(self.success_count) + "个。")
def loginAndPostMessage(self, present_website, VPN): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue userInfo = generate_login_data(present_website) if userInfo == None: g_var.logger.error("数据库中获取用户失败,本线程停止!") return {"error": -1} # 1、登录 retry_count = 0 login_signal = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 loginData = self.__login(Session, VPN, userInfo) if loginData == -1: # 登录报错,停止运行 g_var.ERR_MSG = "登录出错" self.failed_count = self.failed_count + 1 time.sleep(g_var.SLEEP_TIME) proxies = ip_proxy(VPN) Session.proxies = proxies continue elif loginData == 1: # 账号异常,重新取新账号登录 self.failed_count = self.failed_count + 1 login_signal = 1 break else: self.failed_count = 0 self.proxy_err_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = "连续登录出错,程序停止" g_var.logger.error("login:连续登录失败!程序停止") break if login_signal == 1: continue # 2、获取个人数据 retry_count = 0 personal_signal = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 personalData = self.__personal_data(Session, loginData) if personalData == -1: g_var.ERR_MSG = "个人数据获取出错" self.failed_count = self.failed_count + 1 time.sleep(g_var.SLEEP_TIME) proxies = ip_proxy(VPN) Session.proxies = proxies continue elif personalData == 1: # 账号异常,重新取新账号登录 self.failed_count = self.failed_count + 1 personal_signal = 1 break else: self.failed_count = 0 self.proxy_err_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = "连续登录出错,程序停止" g_var.logger.error("login:连续登录失败!程序停止") break if personal_signal == 1: continue # 3、发链接 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 status = self.__postMessage(Session, loginData, personalData) if status == 0: # 发链接成功 self.success_count = self.success_count + 1 self.failed_count = 0 self.proxy_err_count = 0 break elif status == 1: self.failed_count = self.failed_count + 1 self.proxy_err_count = self.proxy_err_count + 1 time.sleep(g_var.SLEEP_TIME) proxies = ip_proxy(VPN) Session.proxies = proxies continue elif status == -1: # 获取不到链接,程序停止 self.failed_count = self.failed_count + 1 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = "连续发链接出错,程序停止" g_var.logger.error("连续发链接出错,程序停止") break g_var.logger.info("成功发送" + str(self.success_count) + "个链接。")
def start(self, present_website, VPN): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 # 设置Session对象 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 1、注册 # 获取邮箱 retry_count = 0 email_and_passwd = get_email(present_website) if email_and_passwd == -1: retry_count = g_var.RETRY_COUNT_MAX g_var.ERR_MSG = g_var.ERR_MSG + "|_|没有邮箱了" g_var.logger.error("没有邮箱了") continue while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 registerData = self.__register_one(Session, present_website, email_and_passwd) if registerData == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif registerData == -2: g_var.logger.info("注册失败,可能是邮箱密码不符合要求、或ip被封等原因,请排查!") self.proxy_err_count = self.proxy_err_count + 1 proxies = ip_proxy(VPN) if proxies == {"error": -1}: g_var.logger.info("获取代理错误") self.failed_count = self.failed_count + 1 Session.proxies = proxies elif registerData == 0: # 注册成功,但激活失败 email_and_passwd = get_email(present_website) if email_and_passwd == -1: retry_count = g_var.RETRY_COUNT_MAX g_var.ERR_MSG = g_var.ERR_MSG + "|_|没有邮箱了" g_var.logger.error("没有邮箱了") continue retry_count = 0 else: # 注册成功 self.failed_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续注册出错,程序停止" g_var.logger.error("start:连续注册失败!程序停止") break # 2、登录 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 构造一个userInfo g_var.logger.info(registerData) userInfo = [ int(registerData['id']), registerData['username'], registerData['password'], registerData['email'], 0, str(registerData['cookie']) ] login_signal = 0 # 记录状态,成功为0,失败为1 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 loginData = self.login(Session, present_website, VPN, userInfo) if loginData == -1: # 代理问题,更换代理 g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif loginData == -2: # 账号异常,跳出本循环 self.failed_count = self.failed_count + 1 login_signal = 1 break else: self.failed_count = 0 self.proxy_err_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续登录出错,程序停止" g_var.logger.error("start:连续登录失败!程序停止") break if login_signal == 1: continue # 3、发文章 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 status = self.__postMessage(Session, loginData, present_website) if status == 0: # 发文章成功 self.success_count = self.success_count + 1 self.failed_count = 0 self.proxy_err_count = 0 break elif status == -1: g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif status == -2: # 某些必须停止的错误,程序停止 self.failed_count = self.failed_count + 1 g_var.SPIDER_STATUS = 3 break elif status == -3: self.failed_count = self.failed_count + 1 elif status == -4: sql = "UPDATE %s SET cookie=null WHERE id=%s ;" % ( present_website, loginData["id"]) g_var.logger.info(sql) status = MysqlHandler().update(sql) if status != 0: g_var.logger.error("数据库清除cookie错误!") return {"error": 1} break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续发文章出错,程序停止" g_var.logger.error("连续发文章出错,程序停止") break g_var.logger.info("成功注册账户并发送文章" + str(self.success_count) + "篇")
def loginAndPostMessage(self, present_website, VPN: str): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 从数据库中获取用户信息 userInfo = generate_login_data(present_website) g_var.logger.info(userInfo) if userInfo == None: g_var.ERR_CODE = 2001 g_var.ERR_MSG = g_var.ERR_MSG + "无法获取proxy!" g_var.logger.error("数据库中获取用户失败,本线程停止!") return -1 # 1、登录 login_signal = 0 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 loginData = self.login(Session, present_website, VPN, userInfo) if loginData == -1: # 代理问题,更换代理 g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif loginData == -2: # 账号异常,跳出本循环 self.failed_count = self.failed_count + 1 login_signal = 1 break else: self.failed_count = 0 self.proxy_err_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续登录出错,程序停止" g_var.logger.error("login:连续登录失败!程序停止") break if login_signal == 1: continue # 2、发文章 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: time.sleep(g_var.SLEEP_TIME) retry_count = retry_count + 1 status = self.__postMessage(Session, loginData, present_website) if status == 0: # 发文章成功 self.success_count = self.success_count + 1 self.failed_count = 0 self.proxy_err_count = 0 break elif status == -1: # 返回值为-1,更换代理 g_var.ERR_MSG = g_var.ERR_MSG + "|_|代理连续错误" g_var.logger.info("代理错误") retry_count = g_var.RETRY_COUNT_MAX elif status == -2: # 返回值为-1,某些必须停止的错误,程序停止 self.failed_count = self.failed_count + 1 g_var.SPIDER_STATUS = 3 break elif status == -3: self.failed_count = self.failed_count + 1 elif status == -4: sql = "UPDATE %s SET cookie=null WHERE id=%s ;" % ( present_website, loginData["id"]) g_var.logger.info(sql) status = MysqlHandler().update(sql) if status != 0: g_var.logger.error("数据库清除cookie错误!") return {"error": 1} break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = g_var.ERR_MSG + "|_|连续发文章出错,程序停止" g_var.logger.error("连续发文章出错,程序停止") break g_var.logger.info("成功发送" + str(self.success_count) + "篇文章")
g_var.ERR_MSG = g_var.ERR_MSG + "无法从接口获取email!" return -1 if retry_count == g_var.RETRY_COUNT_MAX: g_var.SPIDER_STATUS = 3 g_var.ERR_CODE = 3005 g_var.ERR_MSG = g_var.ERR_MSG + "邮箱库中无可用email!" return -1 g_var.logger = Logger('test.log', level='info').logger # 实例化一个logger对象 g_var.INTERFACE_HOST = "http://192.168.31.234:8080" g_var.UUID = "1383838438" get_global_params("scoop_it") Session = get_Session("en") url = "https://www.scoop.it/subscribe?&token=&sn=&showForm=true" # headers = { # 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36', # } # html = Session.get(url, headers=headers, timeout=g_var.TIMEOUT).text # print(html) FullName = generate_random_string(15, 20) password = generate_random_string(10, 15) email_and_passwd = get_email("scoop_it") # googlekey="6LevIjoUAAAAAEJnsStYfxxf5CEQgST01NxAwH8v" # pageurl="https://www.scoop.it/subscribe?&token=&sn=&showForm=true" # recaptcha_value = google_captcha(Session, googlekey, pageurl) recaptcha_value = input("请输入验证码:")
def loginAndPostMessage(self, present_website, VPN): while self.success_count < self.assignment_num: # 每次循环检测当前错误状态 if self.__monitor_status() == -1: break self.now_count = self.now_count + 1 Session = get_Session(VPN) if Session == -1: self.failed_count = self.failed_count + 1 continue # 从数据库中获取用户信息 userInfo = generate_login_data(present_website) g_var.logger.info(userInfo) if userInfo == None: g_var.ERR_CODE = 2001 g_var.ERR_MSG = g_var.ERR_MSG + "无法获取proxy!" g_var.logger.error("数据库中获取用户失败,本线程停止!") return -1 # 1、登录 login_signal = 0 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: retry_count = retry_count + 1 loginData = self.__login(Session, present_website, VPN, userInfo) if loginData == -1: # 代理问题,更换代理 g_var.ERR_MSG = "登录出错" self.failed_count = self.failed_count + 1 time.sleep(g_var.SLEEP_TIME) proxies = ip_proxy(VPN) if proxies == {"error": -1}: self.failed_count = self.failed_count + 1 continue Session.proxies = proxies continue elif loginData == -2: # 账号异常,跳出本循环 self.failed_count = self.failed_count + 1 login_signal = 1 break else: self.failed_count = 0 self.proxy_err_count = 0 break if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = "连续登录出错,程序停止" g_var.logger.error("login:连续登录失败!程序停止") break if login_signal == 1: continue # 2、发文章 retry_count = 0 while retry_count < g_var.RETRY_COUNT_MAX: time.sleep(g_var.SLEEP_TIME) retry_count = retry_count + 1 status = self.__postMessage(Session, loginData, present_website) if status == 0: # 发文章成功 self.success_count = self.success_count + 1 self.failed_count = 0 self.proxy_err_count = 0 break elif status == -1: # 返回值为-1,更换代理 self.failed_count = self.failed_count + 1 self.proxy_err_count = self.proxy_err_count + 1 time.sleep(g_var.SLEEP_TIME) proxies = ip_proxy(VPN) if proxies == {"error": -1}: self.failed_count = self.failed_count + 1 continue Session.proxies = proxies # g_var.logger.info("proxies"+str(proxies)) elif status == -2: # 返回值为-1,某些必须停止的错误,程序停止 self.failed_count = self.failed_count + 1 g_var.SPIDER_STATUS = 3 break elif status == -3: # 返回值为-1,数据库错误 self.failed_count = self.failed_count + 1 if retry_count == g_var.RETRY_COUNT_MAX: # 连续出错说明发生了一些问题,需要停止程序 g_var.SPIDER_STATUS = 3 g_var.ERR_MSG = "连续发文章出错,程序停止" g_var.logger.error("连续发文章出错,程序停止") break g_var.logger.info("成功发送" + str(self.success_count) + "篇文章")