模拟登陆 Python
admin
2023-07-30 20:31:24
0

模拟登陆 Python

from my wp blog

OOP老师有个网站,用于发布课件和布置提交作业,截止后作业都放在网上供学生下载

我浙大牛不少,把程序抓出来研究一下源码

模拟登陆

  • 关于网站
    • 木有验证码
      • 无需输入
      • 无需识别
    • 下载文件与绝对url无关,需要先访问一个页面,然后才能下载
      • 可能是headers的refer
    • 学生代码格式不统一
      • .cpp
      • .zip
      • .rar
      • .tar.gz

引入几个库,伪造表单数据

import urllib
import urllib2
import cookielib

auth_url = \'http://fm.zju.edu.cn/login.php\'
data = {
    \'user\' : setting.user,
    \'passwd\' : setting.passwd,
}
postData = urllib.urlencode(data) #把数据编码为url格式

cookie管理

cookieJar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))

伪造请求头

headers = {
    \'Host\' : setting.host,
    \'Referer\' : setting.referer,
}
req = urllib2.Request(auth_url, postData, headers)
req.add_header(\'User-Agent\', setting.user_agent) #ua加入更健康
result = opener.open(req) #响应头和内容

查看result数据,发现已经登陆

先访问一个页面,然后在这个页面中下载代码文件

assign_url = \'http://fm.zju.edu.cn/showProblem.php?cid=**&pid=**\'
result = opener.open(assign_url)
file_url = \'http://fm.zju.edu.cn/dls.php?cid=**&id=\'
for id in range(0, 150):
    result = opener.open(file_url+str(id))

这个时候代码文件已经下载,所需要做的是给一个文件名

在响应头里面可以找到一些东西,用正则可以抓出文件名,然后文件写入保存

import re
filenameRe = re.compile(r\'^.*filename=(.+)$\')
...
...
    filename = \'100/\' + str(id) + \'_\'+ filename
    outfile = open(filename, \'wb\')
    outfile.write(result.read())
    outfile.close()

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...