国外打开网站会不会乱码,百度空间登录入口,邯郸做网站电话,酒类网站建设方案案[Cookie实战]一键部署大批量的Cookie调试环境
Cookie池项目介绍
web项目#xff0c;统一管理账号密码#xff0c;以及维护Cookie 【定时】全自动根据账号密码登录并提取Cookie 【被动】协助式绕过验证码实现登录并获取Cookie 主动提供接口API#xff0c;实现Cookie的使用 …[Cookie实战]一键部署大批量的Cookie调试环境Cookie池项目介绍web项目统一管理账号密码以及维护Cookie【定时】全自动根据账号密码登录并提取Cookie【被动】协助式绕过验证码实现登录并获取Cookie主动提供接口API实现Cookie的使用高可用的预留拓展接口实践操作Cookie池项目源码介绍Cookie #是添加的App应用包含主要的模型models.py和主要的任务tasks.pycookiemanage和manage.py是基础的行为文件celerybeat-schedule.db和cookiemanage-django.sqlite3是数据库文件cookiemanagecelery.py 这个文件不要动urls.py 拓展链接的时候可以在urlpatterns里面加- wsgi.py 这个文件也不要动- settings.pycookiemigrations 这是一个App我们需要做的是模型models任务tasksviewsmodels.pyfromdjango.dbimportmodelsfromdjango.utils.timezoneimportnow#web账号的模型classWebModel(models.Model):# 网站的名称namemodels.CharField(default,max_length64,verbose_name网站名称)#登录的网址loginurlmodels.CharField(default,max_length255,verbose_name登录网址)#首页的网址indexurlmodels.CharField(default,max_length255,verbose_name首页网址)#判断登录是自动化登录还是半自动化的协助登录HALF_OR_AUTO((auto,auto),(half,half))half_or_auto_get_cookiemodels.CharField(choicesHALF_OR_AUTO,defaultauto,max_length32,verbose_name全自动或半自动获取Cookie)#提取Cookie的脚本extract_cookie_scriptmodels.TextField(default,verbose_name提取Cookie的Python脚本,blankTrue,nullTrue)#脚本的选择SCRIPT((python,python),(javascript,javascript),(default,default))active_cookie_use_python_or_javascript_scriptmodels.CharField(max_length64,choicesSCRIPT,defaultdefault,verbose_name选择使用脚本)active_js_scriptmodels.TextField(default,verbose_name活跃Cookie的JS脚本,blankTrue,nullTrue)wait_exec_active_js_scriptmodels.IntegerField(default100,verbose_name等待JS执行的时间)active_python_scriptmodels.TextField(default,verbose_name活跃Cookie的Python脚本,blankTrue,nullTrue)def__str__(self):returnf{self.name}网站目前有{self.accounts.count()}个会员账号#账号模型classAccountModel(models.Model):#属于哪个网站webmodels.ForeignKey(toWebModel,on_deletemodels.CASCADE,related_nameaccounts,verbose_name归属网站)#账号usernamemodels.CharField(default,max_length64,verbose_name账号)#密码passwordmodels.CharField(default,max_length64,verbose_name密码)#获取Cookiecookiemodels.TextField(default,verbose_nameCookie,blankTrue,nullTrue)opera_datetimemodels.DateTimeField(verbose_name操作时间,auto_nowTrue)propertydefactive_cookie_use_python_or_javascript_script(self):returnself.web.active_cookie_use_python_or_javascript_scriptdef__str__(self):#默认输出时的内容returnf{self.username}账号归属于{self.web.name},当前Cookie{self.cookie}defto_dict(self):temp_dict{web:{name:self.web.name,loginurl:self.web.loginurl,indexurl:self.web.indexurl,},id:self.id,username:self.username,password:self.password,extract_cookie_script:self.web.extract_cookie_script,}returntemp_dictdefcookie_to_dict(self):temp_dict{web:{name:self.web.name,loginurl:self.web.loginurl,indexurl:self.web.indexurl,},id:self.id,username:self.username,cookie:self.cookie,active_cookie_use_python_or_javascript_script:self.web.active_cookie_use_python_or_javascript_script,active_js_script:self.web.active_js_script,wait_exec_active_js_script:self.web.wait_exec_active_js_script,active_python_script:self.web.active_python_script,}returntemp_dict#活动记录的模型账号记录classActiveRecordModel(models.Model):#创建了哪个账号accountmodels.ForeignKey(toAccountModel,on_deletemodels.CASCADE,related_nameactive_record,verbose_name归属账号)#账号做了哪些操作operamodels.CharField(default,verbose_name操作,max_length128,nullTrue,blankTrue)#开始时间start_datetimemodels.DateTimeField(defaultnow,verbose_name开始时间)#结束时间end_datetimemodels.DateTimeField(defaultnow,verbose_name结束时间)def__str__(self):returnf{self.account.username}活跃记录进行了{self.opera}操作开始于{self.start_datetime}, 结束于{self.end_datetime}task任务fromceleryimportshared_task,taskimportrandom,datetime,json,requestsfromlxmlimportetreefromtimeimportsleepfromdjango.utils.timezoneimportnowfromcookie.modelsimportAccountModel,WebModel,ActiveRecordModelfromdjango.db.modelsimportQtaskdefcheck_account_need_auto_get_cookie():#检测账号是否需要自动读取CookieaccountsAccountModel.objects.filter(cookie)#检测没有Cookie的账号foracinaccounts:#ac是提取账号的名称ifac.web.half_or_auto_get_cookieauto:#看一下他的站是否是自动的如果是自动的就自动提取如果不是就半自动提取auto_get_cookie(ac)# print(ac)taskdefauto_get_cookie(account):#自动提取Cookiestart_datetimenow()#开始nameaccount.web.name#账号的名称ifnameshanzhi:#最好用英文的名称如果是shanzhi这个网站就到website这里面来了fromwebsite.shanzhi.auto_get_cookieimportmain status,cookiemain(account.username,account.password)ifstatus:#如果状态码为trueaccount.cookiecookie account.save()#保存一下就可以了else:returnFalse#如果失败返回falseelse:returnFalseend_datetimenow()#结束时间armActiveRecordModel(accountaccount,opera自动登录提取Cookie,start_datetimestart_datetime,end_datetimeend_datetime)arm.save()#记录操作returnTruetaskdefcheck_account_cookie_need_active():accountsAccountModel.objects.filter(Q(web__active_cookie_use_python_or_javascript_scriptdefault),~Q(cookie)).order_by(-opera_datetime)[:2]foracinaccounts:activate_cookie(ac)taskdefactivate_cookie(account):start_datetimedatetime.datetime.now()# print(account.cookie,-------------)cookie_dictjson.loads(account.cookie)sessionrequests.Session()session.cookiesrequests.utils.cookiejar_from_dict(cookie_dict)num1whilenum5:responsesession.get(account.web.indexurl)htmletree.HTML(response.text)linkshtml.xpath(.//a/href)linkrandom.choice(links)ifnotlink:end_datetimedatetime.datetime.now()armActiveRecordModel(accountaccount,start_datetimestart_datetime,end_datetimeend_datetime)arm.save()returnFalsesession.get(link)sleep(random.randint(4,20))num1cookies_dictrequests.utils.dict_from_cookiejar(session.cookies)cookies_strjson.dumps(cookies_dict)account.cookiecookies_str account.save()end_datetimedatetime.datetime.now()armActiveRecordModel(accountaccount,opera活跃Cookie,start_datetimestart_datetime,end_datetimeend_datetime)arm.save()returnTruewebsite 需要注册在settings文件中找到INSTALLED_APPS进行注册Cookie池项目介绍涉及技术DjangoCelery远程协调celery 异步用于定时比较方便部署方式单机部署协助拓展