
谢萌妹子邀
你这个问题有两个方面
第一个是怎么开开选课那网页【也就是连接服务器】
第二个是怎么让服务器知道你选了这课
好吧这就是HTTP协议的问题了
氖可以先去看一下喂鸡百科 HTTP1.1协议
当然你要像楼上这样真的让电脑渲染一个网页然后再提交这么麻烦也不是不可以……但是比较消耗资源对吧
这时候我们只需要假装是个人看到这个网页做出反应让服务器知道就好了= ̄ω ̄=【这就是验证码的任务】
那么呢……我们首先要知道……当我们点击网页时候浏览器做了什么→_→
明天填坑→_→
2015.3.3 update
氖可以先去下一个fiddler→_→来研究一下
等会回宿舍我开电脑截图= ̄ω ̄=
2015.3.8
太忙了而且病了一段时间
现在开始填大坑
首先可以看到,这是一个平淡无奇的选课系统登陆界面
然后打开fiddler,刷新一下~
得到这个
红框部分是重点,因为其他的304回应什么的都是gif……显然……我看不懂嗯所以我就忽略了╮( ̄▽ ̄")╭
接下来,我们就要看一下登陆时候发生了什么,首先呢,我们正常地登陆一下
账号密码什么的都是瞎编的╮( ̄▽ ̄")╭
然后我们看一下fiddler告诉我们发生了什么呢~
往外post了一行
post的数据能从Fiddler里面看到,我就复制下来了……看图挺费劲的
于是呢~我们就会发现,我们在网页上填的三个数据,用户名,密码,验证码都被post上去了
所以写软件的时候,我们可以这么构造
ID,passwd,vcode让用户输入嘛
但是呢~只有这些还不够~服务器君表示你这么登一次我怎么知道下次这个ip发过来的还是不是你呀╮( ̄▽ ̄")╭ 所以服务器君给了我们一个cookie,这个cookie是在第一个get登陆页面时候就收到了的,所以写代码的时候请记得拿出来~
于是我们有了cookie,有了用户名,密码,但是验证码总不会是每次都一样的呀~所以还需要get一下验证码的图片~
但是,服务器君表示,我怎么知道这个验证码和这个ip是什么关系o( ̄ヘ ̄o#),于是我们要记得带上cookie,当然,还得加上其他的请求头,这些可以照抄的
于是,我们get到了验证码的图片~
并且保存成了一个文件
好的,现在进入苦大仇深的GUI设计环节……氖萌可以搜一下,Tkinter有一个VB插件是可以把画出来的界面转换成tk代码的……网址我等会再给你们……
顺便告诉你们怎么把照片贴进tk做的界面里面
这段代码我找了大概三个小时……
好的……现在我们能登陆了
login~
我们要的在这里
点一下看看Fiddler告诉我们什么~
嗯,他让你开开就让程序get一下吧
还要再get一次~
于是我们就看到了熟悉的选课界面~~~~
你们就别好奇我选了什么课了2333333333
好的~让我们来假装正经地选一次课
Fiddler君的心灵受到了一点伤害
我觉得是个人都能看出来这里应该怎么做了……
循环着往服务器post啊……写个循环不就好了嘛╮( ̄▽ ̄")╭
根据广大南开学子与选课系统斗争的经验,五秒内做这种事超过两次,服务器君就会不理你了
所以每次都要记得休睡够五秒哦~~
嗯……这样子你的刷课机就具备了基本的功能
剩下的都是人机交互和客户体验的问题了,还有程序的鲁♂棒♀性
至于某些神奇的学校【比如隔壁技校】的选课系统在选课的时候根本打不开这种事……大概什么程序都救不了你的……除非强行多线程轰炸靠运气填服务器了
源代码
灵感来源→_→:按键精灵
现在抢课更新位于
,但是原来那个也行╮( ̄▽ ̄")╭
警告:由于代码实现过程没有考虑连接复用导致服务器被拖垮,各位实现的时候务必使用支持自动连接复用的库,例如Python的urllib3以及requests
以上
