Пример #1
0
 def _login_admin(self, try_count=3):
     # global hash_v, hash_k, rhash_k, rhash_v
     try:
         login_url = "%s/login.php" % self.back_ground_url
         login_form = {
             "dopost": "login",
             "adminstyle": "newdedecms",
             "validate": "",
             "gotopage": self.back_ground_url + "/index.php",
             "userid": self.user,
             "pwd": self.pwd
         }
         res = utils.my_requests(login_url,
                                 timeout=60,
                                 requester=self.session)
         try:
             self.charset = res.apparent_encoding
         except Exception as e:
             print("%s:编码识别错误" % self.domain)
         # if "vdimgck" in re.sub("(?=<!--)[\s\S]+(?<=-->)","",res.text):
         if 1 == 1:
             res = utils.my_requests(self.domain + self.vcode_url,
                                     timeout=10,
                                     requester=self.session)
             img_path = "./vcode/%d.jpg" % int(time.time())
             with open(file=img_path, mode="wb") as fp:
                 fp.write(res.content)
             img = Image.open(img_path)
             vcode_v = utils.base64_api(uname='danche',
                                        pwd='qq199605',
                                        img=img)
             if "余额不足" in vcode_v:
                 return False
             login_form.update({"validate": vcode_v})
         res = utils.my_requests(method="post",
                                 url=login_url,
                                 data=login_form,
                                 allow_redirects=True,
                                 timeout=120,
                                 requester=self.session)
         if "验证码不正确" in res.text:
             return False
         return True
     except Exception as e:
         traceback.print_exc()
         if try_count > 0:
             return self._login_admin(try_count - 1)
         else:
             return False
Пример #2
0
def 注册(domain, num=5):
    session = requests.session()
    res = session.get(domain + variable_storage.dede_vc_url, timeout=10)
    with open(file="tp.jpg", mode="wb") as fp:
        fp.write(res.content)
    img_path = "tp.jpg"
    img = Image.open(img_path)
    result = utils.base64_api(uname='danche', pwd='qq199605', img=img)
    print(result)
    res = post_data(session, domain, result)
    if res:
        return True
    elif num > 0:
        print("尝试重新注册:" + domain)
        return 注册(domain, num - 1)
Пример #3
0
 def _login_member(self, try_count=3):
     try:
         login_url = "%s/member" % self.domain
         login_form = {
             "dopost": "login",
             "fmdo": "login",
             "userid": self.user,
             "pwd": self.pwd,
             "vdcode": "",
             "gourl": "/",
             "keeptime": "604800"
         }
         res = utils.my_requests(login_url,
                                 timeout=60,
                                 requester=self.session)
         try:
             self.charset = res.apparent_encoding
         except Exception as e:
             print("%s:编码识别错误" % self.domain)
         # if "vdimgck" in re.sub("(?=<!--)[\s\S]+(?<=-->)","",res.text):
         if 1 == 1:
             res = utils.my_requests(self.domain + self.vcode_url,
                                     timeout=10,
                                     requester=self.session)
             img_path = "./vcode/%d.jpg" % int(time.time())
             with open(file=img_path, mode="wb") as fp:
                 fp.write(res.content)
             img = Image.open(img_path)
             vcode_v = utils.base64_api(uname='danche',
                                        pwd='qq199605',
                                        img=img)
             login_form.update({"vdcode": vcode_v})
         res = utils.my_requests(method="post",
                                 url=login_url + "/index_do.php",
                                 headers=self.heders,
                                 data=login_form,
                                 allow_redirects=True,
                                 timeout=120,
                                 requester=self.session)
         if "DedeUserID" in requests.utils.dict_from_cookiejar(
                 self.session.cookies).keys():
             return True
         else:
             res = utils.my_requests(method="post",
                                     url=login_url + "/index_do.php",
                                     headers=self.heders,
                                     params=login_form,
                                     allow_redirects=True,
                                     timeout=120,
                                     requester=self.session)
             if "DedeUserID" in requests.utils.dict_from_cookiejar(
                     self.session.cookies).keys():
                 return True
         if try_count > 0:
             return self._login_member(try_count - 1)
     except Exception as e:
         traceback.print_exc()
         if try_count > 0:
             return self._login_member(try_count - 1)
         else:
             return False
Пример #4
0
 def reset_back_admin(self, try_count=3):
     try:
         res = utils.my_requests(method="get",
                                 url=self.domain +
                                 "/member/edit_baseinfo.php",
                                 requester=self.session)
         try:
             uname = re.findall(r'(?<=id\="uname" value\=").*?(?=")',
                                res.text)[0]
         except Exception as e:
             uname = "admin"
         post_form = {
             "dopost": "save",
             "uname": uname,
             "oldpwd": self.pwd,
             "userpwd": self.pwd,
             "userpwdok": self.pwd,
             "safequestion": "0",
             "safeanswer": "",
             "newsafequestion": "0",
             "newsafeanswer": "",
             "sex": "男".encode(self.charset),
             "email": "*****@*****.**",
             "vdcode": ""
         }
         res = utils.my_requests(self.domain + self.vcode_url,
                                 timeout=10,
                                 requester=self.session)
         img_path = "./vcode/%d.jpg" % int(time.time())
         with open(file=img_path, mode="wb") as fp:
             fp.write(res.content)
         img = Image.open(img_path)
         vcode_v = utils.base64_api(uname='danche', pwd='qq199605', img=img)
         post_form.update({"vdcode": vcode_v})
         res = utils.my_requests(method="post",
                                 url=self.domain +
                                 "/member/edit_baseinfo.php",
                                 headers=self.heders,
                                 data=post_form,
                                 allow_redirects=True,
                                 timeout=120,
                                 requester=self.session)
         if "成功" not in res.text:
             res = utils.my_requests(method="post",
                                     url=self.domain +
                                     "/member/edit_baseinfo.php",
                                     headers=self.heders,
                                     params=post_form,
                                     allow_redirects=True,
                                     timeout=120,
                                     requester=self.session)
             if "成功" not in res.text:
                 if try_count > 0:
                     return self.reset_back_admin(try_count - 1)
                 else:
                     if "完成详细资料" in res.text:
                         return {
                             "domain": self.domain,
                             "res": False,
                             "info": "失败(完善详细资料)!!!"
                         }
                     return {
                         "domain": self.domain,
                         "res": False,
                         "info": "失败!!!"
                     }
         return {
             "domain":
             "%s|%s|admin(%s)" % (self.domain, self.back_ground_url, uname),
             "res":
             True,
             "info":
             "成功!!!"
         }
     except Exception as e:
         traceback.print_exc()
         if try_count > 0:
             return self.reset_back_admin(try_count - 1)
         else:
             return {"domain": self.domain, "res": False, "info": "失败!!!"}
Пример #5
0
def 注册(domain, num=3):
    try:
        session = requests.session()
        res = session.get(domain + variable_storage.dede_vc_url, timeout=10)
        if res.status_code != 200:
            res = session.get(domain + "/library/vdimgck.php", timeout=10)
        with open(file="./tp.jpg", mode="wb") as fp:
            fp.write(res.content)
        if res.status_code != 200:
            return {
                "domain": domain,
                "res": False,
                "info": "非织梦,状态码:%d" % res.status_code
            }
        img_path = "./tp.jpg"
        try:
            img = Image.open(img_path)
        except:
            return {
                "domain": domain,
                "res": False,
                "info": "非织梦,状态码:%d" % res.status_code
            }
        result = utils.base64_api(uname=variable_storage.vcode_pm_uname,
                                  pwd=variable_storage.vcode_pm_pwd,
                                  img=img)
        res = post_data(session, domain, result)
        if not res:
            raise ConnectionError
        if res.status_code != 200:
            return {
                "domain": domain,
                "res": False,
                "info": "注册状态:%d" % res.status_code
            }
        if "成功" in res.text or "模型不存在" in res.text or "完成基本信息的注册" in res.text:
            return {"domain": domain, "res": True, "info": "0000001"}
        elif "存在" in res.text or "重复" in res.text:
            res = post_data(session,
                            domain,
                            result,
                            uname=variable_storage.mail)
            if "成功" in res.text or "模型不存在" in res.text or "完成基本信息的注册" in res.text or "存在" in res.text or "重复" in res.text:
                return {
                    "domain": domain,
                    "res": True,
                    "info": variable_storage.mail
                }
            if "Email已经被" in res.text:
                return {"domain": domain, "res": True, "info": "0000001"}
        else:
            res = post_data(session, domain, result, dopost="regok")
            if "成功" in res.text or "模型不存在" in res.text or "完成基本信息的注册" in res.text or "存在" in res.text or "重复" in res.text:
                return {"domain": domain, "res": True, "info": "0000001"}
        message = re.findall('(?<=document.write\()\S+(?="\);)', res.text)[0]
        return {
            "domain": domain,
            "res": False,
            "info": "注册失败:%d--%s" % (res.status_code, message)
        }
    except ConnectionError as e:
        return {"domain": domain, "res": False, "info": "连接失败"}
    except requests.exceptions.ReadTimeout as e:
        return {"domain": domain, "res": False, "info": "连接超时"}
    except Exception as e:
        if num > 0:
            print("尝试重新注册:" + domain)
            return 注册(domain, num - 1)
        else:
            return {"domain": domain, "res": False, "info": "未知异常"}