本期为了满足用户的需求,特地的做了一款末so狗主动提交url以及提交快照更新软件,在做软件前,首先在python源码中,需要保证代码的运行流畅,然后才可以设计软件,在软件界面上进行任务的提交。
一、主动提交
某so狗的主动提交需要账号密码登录,然后再进行post请求,那么自然而然需要保持cookie一致或者session会话一直,这里用到session会比较方便。
1、请求验证码
验证码的源码是svg标签格式,需要通过对svg转成验证码图片,然后才能进行识别,这里识别用到了第三方打码平台,其实有免费的库可以识别或者其他方法,但是准确率不行,很容易造成so狗平台对ip的长时间的封禁,那么花点小钱用平台识别,准确率是比较高的,而且只需要验证一次就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 | #from reportlab.graphics import renderPM #from svglib.svglib import svg2rlg def code_img(self): resp = self.session.get(self.verify_url) f = StringIO(resp.text) drawing = svg2rlg(f) print(drawing) renderPM.drawToFile(drawing,f'common/1.png',fmt='JPG') img_bytes = renderPM.drawToString(drawing,fmt='JPG') # self.code = self.ocr.classification(img_bytes) self.code = self.chaojiying.PostPic(img_bytes, 1004)['pic_str'] print(self.code) |
2、登录获取session
保持登录会话一致,用验证码识别结果进行post请求,返回success就表示成功了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def login_sougou(self): while True: self.session.get('https://zhanzhang.sougou.com') form_data = { 'code':self.code, 'pwd':self.password, 'userid':self.username } resp = self.session.post(url=self.login_url,data=form_data,headers=self.headers).json() print(resp) # time.sleep(3) if resp['code'] == 0: break else: self.code_img() |
3、url主动提交
再到登录后的页面,进行url主动提交就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | def submit_url(self,url): while True: from_data = { "urls": url, "url": "", "code": self.code, "role_id": 2, "site_id": 64517419, "site_address": "www.seopassion.com", "urlSubFlag": 'true' } resp = self.session.post(url=self.post_url,data=from_data,headers=self.headers).json() if resp['code'] == 0: print('已成功推送') return resp['msg'] elif resp['msg'] == '暂无权限': print(resp) return resp['msg'] else: self.code_img() self.login_sougou() |
二、快照更新
快照更新是不需要登录的。所以会比较方便,那么在代码逻辑中,拿到post地址进行快照更新提交就ok了。
三、designer界面设计
在designer界面中,进行简单的软件设计,整体框架先罗列出来,这里就简单做了一下,没有对样式进行优化,比较简陋一点。
通过命令将ui文件转为py文件
1 | python -m PyQt5.uic.pyuic sougou1.ui -o sougou1.py |
将软件各个按钮点击事件与我们之前的python代码进行绑定,再对数据进行界面显示,整体逻辑就这样了。
四、最后运行结果
某狗主动提交
某狗快照更新
这里软件就简单设计了一下,后面将软件封装一下,就可以长期投入使用,如果有需要源码或者软件的话,可以随时私信我vx:dan_moln 。