吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3636|回复: 12
收起左侧

[Python 转载] 利用python模拟请求进行成绩查询

  [复制链接]
frankyxu 发表于 2021-1-28 11:13

昨天浏览网站的时候看到一个帖子,大意是如何用python去模拟网站进行成绩查询,于是有了这个帖子

先把代码放上来

# coding: utf-8
import requests

session = requests.session()
headers = {
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Cache-Control': 'no-cache',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'DNT': '1',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Origin': 'https://411318.yichafen.com',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'https://411318.yichafen.com/public/queryscore/sqcode/MsTcIn3mOTU1MnxkOGFiNDUzMWJjOGY3MjhiY2ZkN2FiZmQ0MmE0YzgxOXw0MTEzMTgO0O0O.html',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
}

def get_cookies():
    response = session.get(url='https://411318.yichafen.com', headers=headers)
    print(response.cookies)
def get_score():

    response = session.get('https://411318.yichafen.com/public/queryresult.html', headers=headers)
    print(response.text)
    print(response.headers)

def get_status(usercode='101106120448', username='肖涛'):
    data = {
        's_kaohao': usercode,
        's_xingming': username
    }

    response = session.post(
        'https://411318.yichafen.com/public/checkcondition/sqcode/MsTcIn3mOTU1MnxkOGFiNDUzMWJjOGY3MjhiY2ZkN2FiZmQ0MmE0YzgxOXw0MTEzMTgO0O0O.html',
        headers=headers, data=data)
    print(response.text)

def main():
    get_cookies()
    get_status()
    get_score()

if __name__ == '__main__':
    main()

接着说说我的分析过程

  • 请求分为三步,第一步是拿到cookie,第二步提交用户名和考号会得到一个返回结果,如下
    <pre>{"info":"\u67e5\u8be2\u6210\u529f","status":1,"url":"\/public\/queryresult.html"}</pre>

  • 显示请求成功,但是还要进行第三步,第三部必须带上referer,否者不返回结果

  • 最重要的是访问必须携带cookie而且要在同一个session中,否则不返回数据,所以代码中第一部是请求cookies,用session自动保存cookies,避免了cookie的管理

免费评分

参与人数 3吾爱币 +7 热心值 +2 收起 理由
lr23653141 + 1 + 1 我很赞同!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
arq2020 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

蓝风 发表于 2021-1-28 12:03
session = requests.session()
session就是保持会话,帮你处理cookies的,没需要取出来cookies,
[Python] 纯文本查看 复制代码
# encoding:utf-8
import requests
session = requests.session()
url='https://411318.yichafen.com/public/checkcondition/sqcode/MsTcIn3mOTU1MnxkOGFiNDUzMWJjOGY3MjhiY2ZkN2FiZmQ0MmE0YzgxOXw0MTEzMTgO0O0O.html'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
    'Referer': 'https://411318.yichafen.com/public/queryscore/sqcode/MsTcIn3mOTU1MnxkOGFiNDUzMWJjOGY3MjhiY2ZkN2FiZmQ0MmE0YzgxOXw0MTEzMTgO0O0O.html',
}
data = {
    's_kaohao': 101106120448,
    's_xingming': '肖涛'
}
response = session.get(url='https://411318.yichafen.com', headers=headers)
r=session.post(url,headers=headers,data=data)
res=session.get(url='https://411318.yichafen.com/public/queryresult.html',headers=headers)
print(res.text)
wuwangwo19 发表于 2021-8-9 10:32
本帖最后由 wuwangwo19 于 2021-8-9 11:01 编辑

楼主和4楼的代码都能正常运行,找到数据。感谢两位。
Dlan 发表于 2021-1-28 11:37
fanvalen 发表于 2021-1-28 11:54
保持连接状态还真是阔以,平时都是按需请求
cry323 发表于 2021-1-28 12:27
万一请求的多次;让输入验证码的时候咋办
 楼主| frankyxu 发表于 2021-1-28 13:31
cry323 发表于 2021-1-28 12:27
万一请求的多次;让输入验证码的时候咋办

ocr识别,muggle ocr了解一下
lr23653141 发表于 2021-1-28 16:47
谢谢楼主 很简便 学到了
as1329 发表于 2021-1-29 15:40
兄嘚~ 个人信息貌似没有脱敏
山野村夫-陈墨 发表于 2021-1-31 01:03
使用session这个启发了我,以后不提取cookies了,感谢你。
不过,我也说说我的一点考虑:
Referer:告诉服务器他是从哪个网页的链接过来的。三次请求都是用同一个'Referer, 其实与理不通。
wuwangwo19 发表于 2021-8-8 21:27
这个帖子很受启发。刚学Python但运行后发现无法读取到成绩。@frankyxu
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 09:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表