def needUpdate(): print '页面变动导致爬虫失效,请联系作者更新程序 [email protected]' mail_msg = 'check your github and update it' send_mail(title='[!]wooyunMonitor-needUpdate', content=mail_msg, to_list=['*****@*****.**']) return
def send_email(sender, instance, **kwargs): if not instance.action and instance.content != '': message = { 'text': instance.content_html, } template = 'correspondence' send_mail(instance.theme, instance.email, message, instance.name, template) Correspondence.objects.filter(id=instance.id).update(action=True)
def error_log_once(self, text='default error (once)'): try: is_error_file = open('./isopen_xy.txt', 'r') except: is_error_file = open('./isopen_xy.txt', 'w') if '1' not in is_error_file.read(): print 'writting error to log...' self.error_log(text) else: print 'already written to log' is_error_file.close() sendmail.send_mail('BJTU_Library system error once !', 'error text!')
def send_to_client(self, request, obj): subject = settings.SUBJECT_MAIL.get(obj.category, ) template = settings.TEMPLATE_MAIL.get(obj.category, ) message = Promotion.objects.obj_contents(obj.category, obj.language) if message is None: messages.error(request, _('Promotion on this language does not exist')) else: err = send_mail(subject, obj.email, message, obj.company, template, obj.language) if err: messages.error(request, _('There was an error sending the email: ')) messages.add_message(request, messages.ERROR, str(err)[1:-2]) else: Clients.objects.filter(uuid=obj.uuid).update(count=obj.count + 1) messages.info(request, _("Message was successfully sent to client")) translation.deactivate() return redirect( reverse_lazy('admin:clients_clients_change', args=[ obj.uuid, ]))
def _is_success(self, text): """ 接受最终的html内容,判断是否成功,并触发日志记录和邮件提醒 """ if '<h5 id="MessageTip">已经存在有效的预约记录。</h5>' in text: self.clear_error_once('[done!] You already ordered a seat!') elif '<h5 id="MessageTip">选择的日期不允许预约。</h5>' in text: self.clear_error_once('[done!] Date is wrong!') elif '<h5 id="MessageTip">所选座位已经被预约。</h5>' in text: self.clear_error_once('[done!] This seat is not available, maybe taken by others!') elif '<h5 id="MessageTip">座位预约成功' in text: self.clear_error_once('[done!] Success! An email is sending to you!') sendmail.send_mail('BJTU Library Seat_NO:' + self.seatNO + 'ordered!', 'Sending by robot. Do not reply this mail!', self.mailto) else: self.error_log_once('Error! 302 to login page')
def marketMonitor(baseURL, fileName): log_file = os.path.join( os.path.split(os.path.realpath(__file__))[0], fileName) f = open(log_file, 'r') log_p = f.readline().strip() p = int(log_p) f.close() count = 0 mail_msg = '<br>' # 待发送的邮件内容 found = False # 提取信息 par = r'<td valign="top" style="padding-left:20px">\s*?<h2>([\s|\S]*?)</h2>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>' while (1): p += 1 count += 1 url = baseURL + str(p) c = requests.get(url=url, headers=h).content.decode('utf-8').replace('\n', '') if count > 100: needUpdate() break if '<p><a href="/index.php">' in c: break elif '<span class="num">' in c: found = True mail_msg += '<p>' + url + '<br>' for each in re.findall(par, c)[0]: print each mail_msg += each + '<br>' mail_msg += '--------------</p>' print p else: needUpdate() break if found: f = open(log_file, 'w') f.write(str(p - 1)) f.close() send_mail(title='[!]wooyun-market', content=mail_msg, to_list=mail_list)
def _is_success(self, text): """ 接受最终的html内容,判断是否成功,并触发日志记录和邮件提醒 """ if '<h5 id="MessageTip">已经存在有效的预约记录。</h5>' in text: self.clear_error_once('[done!] You already ordered a seat!') elif '<h5 id="MessageTip">选择的日期不允许预约。</h5>' in text: self.clear_error_once('[done!] Date is wrong!') elif '<h5 id="MessageTip">所选座位已经被预约。</h5>' in text: self.clear_error_once( '[done!] This seat is not available, maybe taken by others!') elif '<h5 id="MessageTip">座位预约成功' in text: self.clear_error_once( '[done!] Success! An email is sending to you!') sendmail.send_mail( 'BJTU Library Seat_NO:' + self.seatNO + 'ordered!', 'Sending by robot. Do not reply this mail!', self.mailto) else: self.error_log_once('Error! 302 to login page')
def marketMonitor(baseURL, fileName): log_file = os.path.join(os.path.split(os.path.realpath(__file__))[0], fileName) f = open(log_file, "r") log_p = f.readline().strip() p = int(log_p) f.close() count = 0 mail_msg = "<br>" # 待发送的邮件内容 found = False # 提取信息 par = r'<td valign="top" style="padding-left:20px">\s*?<h2>([\s|\S]*?)</h2>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>' while 1: p += 1 count += 1 url = baseURL + str(p) c = requests.get(url=url, headers=h).content.decode("utf-8").replace("\n", "") if count > 100: needUpdate() break if '<p><a href="/index.php">' in c: break elif '<span class="num">' in c: found = True mail_msg += "<p>" + url + "<br>" for each in re.findall(par, c)[0]: print each mail_msg += each + "<br>" mail_msg += "--------------</p>" print p else: needUpdate() break if found: f = open(log_file, "w") f.write(str(p - 1)) f.close() send_mail(title="[!]wooyun-market", content=mail_msg, to_list=mail_list)
def common_valid(self, word): phrase = format_html( "<h4>Client with UUID: <a href='http://{}/{}/admin/clients/clients/{}/change/'>{}</a> has made a {}.</h4>", '{}'.format(settings.DOMAIN), '{}'.format(self.request.LANGUAGE_CODE), '{}'.format(self.uuid), '{}'.format(self.uuid), '{}'.format(word)) message = {'text': phrase} err = send_mail('A ' + word + ' made', 'admin', message, 'Admin', 'correspondence') if err: Clients.objects.filter(uuid=self.uuid).update( error_mailing=str(err)[1:-2]) # finalize this script later Clients.objects.filter(uuid=self.uuid).update(preorder=True) return None
def cycle (self): start = time.time() try: sch = Scheduler.objects.get(category=self.category) sch_q = Scheduler.objects.filter(category=self.category) except Scheduler.DoesNotExist: return if sch.tick == 0: sch_q.update(event=_('Tick is 0. Scheduler stopped'), processing=_('No data')) return clients = Clients.objects.filter(enable_mailing=True, category=self.category) if len(clients) == 0: sch_q.update(event=_('Client does not exist')) return lan = [] for l in Promotion.objects.filter(category=self.category): lang={l.language:Promotion.objects.obj_contents(self.category, l.language)} lan.append(lang) for client in clients: cl = Clients.objects.filter(uuid=client.uuid) if client.counter < sch.tick: cl.update(counter=client.counter+1) continue self.l.acquire() try: promotion = [list(p.values()) for p in lan if next(iter(p))==client.language] if len(promotion) == 0: cl.update(error_mailing=_('Promotion does not exists')) continue err = send_mail(self.subject, client.email, promotion[0][0], client.company, self.template, client.language) if err: cl.update(error_mailing=str(err)[1:-2]) else: cl.update(counter=0, count=client.count+1, error_mailing= '') finally: self.l.release() end = time.time() res = end - start sch_q.update(event=_('Scheduler works'), processing="%.2f" % res) return res
def send_email(self, message): subject, to = _('no-reply'), self.cleaned_data.get("email") guest, template = self.cleaned_data["fullname"], 'confirmation' lang = translation.get_language() send_mail(subject, to, message, guest, template, lang) return
def needUpdate(): print "页面变动导致爬虫失效,请联系作者更新程序 [email protected]" mail_msg = "check your github and update it" send_mail(title="[!]wooyunMonitor-needUpdate", content=mail_msg, to_list=["*****@*****.**"]) return
def _error_handler(self): sendmail.send_mail('Error Log', self.mail_message, self.mailto) sys.exit(0)
def run(self): data_middle = { 'roomNum': '101001 ', 'date': self._get_date_str().replace('%2f', '/') + ' 0:00:00', 'divTransparentTop': '0', 'divTransparentLeft': '0' } middle_url = self.base_url + "/FunctionPages/SeatBespeak/SeatLayoutHandle.ashx" print "Try to get [SeatLayoutHandle.ashx]..." self.mail_message += "<br>Try to get [SeatLayoutHandle.ashx]...<br>" for i in range(1, 11): __post = self.s.post(middle_url, data=data_middle, headers=self.headers, timeout=self.middle_content_timeout) self.middle_content = __post.content print " NO:" + str(i) + " status_code:" + str( __post.status_code) + " time(ms):" + str( __post.elapsed.microseconds) + " content_len:" + str( len(self.middle_content)) self.mail_message += " NO:" + str(i) + " status_code:" + str( __post.status_code) + " time(ms):" + str( __post.elapsed.microseconds) + " content_len:" + str( len(self.middle_content)) + "<br>" if "t101001" + self.seatNO in self.middle_content: print "\nGet [SeatLayoutHandle.ashx] success!\n" self.mail_message += "<br>Get [SeatLayoutHandle.ashx] success!<br>" break self.middle_content_timeout += 10 print " -failed-" else: print "\nGet [SeatLayoutHandle.ashx] failed!\n\nSystem exit!\n" # print "\nself.middle_content =>\n" + self.middle_content self.mail_message += "<br>Get [SeatLayoutHandle.ashx] failed!<br>System exit" self.mail_message += "<br>self.middle_content = <br><p><pre>" + self.middle_content + "</pre></p>" self._error_handler() get_para = self._get_static_get_attr(self.middle_content) print "get_para = " + get_para self.mail_message += "<br>Get_para => " + get_para + "<br>" if len(get_para) < 10: print "\nThis seat is taken by others!\nSystem exit!" self.mail_message += "<br>This seat is taken by others!<br>System exit!<br>" self._error_handler() else: pass self.final_url = self.base_url + "/FunctionPages/SeatBespeak/BespeakSubmitWindow.aspx?parameters=" + get_para _headers = { 'Referer': self.base_url + 'FunctionPages/SeatBespeak/BespeakSeatLayout.aspx' } final_dict = self._get_static_post_attr( self.s.get(self.final_url, headers=_headers, timeout=120).content) # print final_dict final_dict["__EVENTTARGET"] = "ContentPanel1$btnBespeak" final_dict["__EVENTARGUMENT"] = "" final_dict["X_CHANGED"] = "false" final_dict["X_TARGET"] = "ContentPanel1_btnBespeak" final_dict["Form2_Collapsed"] = "false" final_dict["ContentPanel1_Collapsed"] = "false" final_dict["X_STATE"] = "" final_dict["X_AJAX"] = "true" self.final_content = self.s.post(self.final_url, data=final_dict, headers=self.headers, timeout=120).content if len(self.final_content) < 10: print "no response from the last post\nsystem exit!\n" self.mail_message += "<br>no response from the last post<br>system exit!<br>" self._error_handler() if "X.wnd.getActiveWindow()" in self.final_content: _m = "Get Seat_NO: " + self.seatNO + " success!" print "\n" + _m self.mail_message += "<br>" + _m + "<br>" sendmail.send_mail(_m, self.mail_message, self.mailto) else: self.mail_message += "<br>Final order POST fail!<br>maybe current time is not allowed<br>System exit!<br>" self._error_handler()
def run(self): data_middle = { 'roomNum': '101001 ', 'date': self._get_date_str().replace('%2f', '/') + ' 0:00:00', 'divTransparentTop': '0', 'divTransparentLeft': '0' } middle_url = self.base_url + "/FunctionPages/SeatBespeak/SeatLayoutHandle.ashx" print "Try to get [SeatLayoutHandle.ashx]..." self.mail_message += "<br>Try to get [SeatLayoutHandle.ashx]...<br>" for i in range(1, 11): __post = self.s.post( middle_url, data=data_middle, headers=self.headers, timeout=self.middle_content_timeout ) self.middle_content = __post.content print " NO:" + str(i) + " status_code:" + str(__post.status_code) + " time(ms):" + str(__post.elapsed.microseconds) + " content_len:" + str(len(self.middle_content)) self.mail_message += " NO:" + str(i) + " status_code:" + str(__post.status_code) + " time(ms):" + str(__post.elapsed.microseconds) + " content_len:" + str(len(self.middle_content)) + "<br>" if "t101001" + self.seatNO in self.middle_content: print "\nGet [SeatLayoutHandle.ashx] success!\n" self.mail_message += "<br>Get [SeatLayoutHandle.ashx] success!<br>" break self.middle_content_timeout +=10 print " -failed-" else: print "\nGet [SeatLayoutHandle.ashx] failed!\n\nSystem exit!\n" # print "\nself.middle_content =>\n" + self.middle_content self.mail_message += "<br>Get [SeatLayoutHandle.ashx] failed!<br>System exit" self.mail_message += "<br>self.middle_content = <br><p><pre>" + self.middle_content + "</pre></p>" self._error_handler() get_para = self._get_static_get_attr(self.middle_content) print "get_para = " + get_para self.mail_message += "<br>Get_para => " + get_para + "<br>" if len(get_para) < 10: print "\nThis seat is taken by others!\nSystem exit!" self.mail_message += "<br>This seat is taken by others!<br>System exit!<br>" self._error_handler() else: pass self.final_url = self.base_url + "/FunctionPages/SeatBespeak/BespeakSubmitWindow.aspx?parameters=" + get_para _headers = { 'Referer': self.base_url + 'FunctionPages/SeatBespeak/BespeakSeatLayout.aspx' } final_dict = self._get_static_post_attr(self.s.get(self.final_url, headers=_headers, timeout=120).content) # print final_dict final_dict["__EVENTTARGET"] = "ContentPanel1$btnBespeak" final_dict["__EVENTARGUMENT"] = "" final_dict["X_CHANGED"] = "false" final_dict["X_TARGET"] = "ContentPanel1_btnBespeak" final_dict["Form2_Collapsed"] = "false" final_dict["ContentPanel1_Collapsed"] = "false" final_dict["X_STATE"] = "" final_dict["X_AJAX"] = "true" self.final_content = self.s.post( self.final_url, data=final_dict, headers=self.headers, timeout=120 ).content if len(self.final_content) < 10: print "no response from the last post\nsystem exit!\n" self.mail_message += "<br>no response from the last post<br>system exit!<br>" self._error_handler() if "X.wnd.getActiveWindow()" in self.final_content: _m = "Get Seat_NO: " + self.seatNO + " success!" print "\n" + _m self.mail_message += "<br>" + _m + "<br>" sendmail.send_mail(_m, self.mail_message, self.mailto) else: self.mail_message += "<br>Final order POST fail!<br>maybe current time is not allowed<br>System exit!<br>" self._error_handler()