python爬虫-某公开数据网站实例小记

news/2024/7/19 11:25:32 标签: python, 爬虫, 开发语言

注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!!

第一步:分析页面和请求方式

此网站没有技巧的加密,仅是需要携带cookie和请求格式,因此本文主要进行分析重点的2次请求

第二步:请求页面并分析请求

可以看到出现了三次请求,前两次请求为302 重定向,第三次请求状态为200

第三步:分析第一次请求

可以看到第一次请求在响应headers 可以获得set-cookie,同时也可以看到第一次请求后被重定向到指定地址Location

第四步:分析第二次请求,注意!注意!注意!这步请求很重要

可以看到第二次请求使用的是第一次请求后响应的重定向网址(也就是第一次请求302响应得到的location)和cookie,这步很重要。

第一请求——>302(重定向)——>response.headers.Location和set-cookie
第二次请求(第一次请求的response.headers.Location
)—>302(重定向)——>response.headers.Location (第二次请求后的重定向网址可以忽略,可以直接请求目标网址)

第五步:请求目标链接

可以看到报文头中携带了cookie和内容类型。注意这两个参数很重要。

第六步:上代码

python"># -*- coding:utf-8 -*-
# @Time : 2023/12/6 12:01
# @Author: 水兵没月
# @File : 某网址-cookie.py
# @Software: PyCharm
import json
import random

import requests

headers = {
    "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
    "Accept-Encoding":"gzip, deflate",
    "Accept-Language":"zh-CN,zh;q=0.9",
    "Cache-Control":"no-cache",
    "Connection":"keep-alive",
    "Content-Type":"application/json",
    "Host":"XXX.XXX.XX.XXX:8081",
    "Pragma":"no-cache",
    "Upgrade-Insecure-Requests":"1",
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",

}
# 第一次请求
res = requests.Session().get("http://XXX.XXX.XX.XXX:8081/cx/", verify=False,headers=headers, allow_redirects=False)  # verify=False,
cookies = res.cookies.items()
cookie = ''
for name, value in cookies:
    cookie += '{0}={1};'.format(name, value)
print(cookie)
headers['Cookie'] = cookie

# 第二次请求
requests.Session().get(res.headers.get("Location"), verify=False,headers=headers, allow_redirects=False)

# 目标请求
url = "http://XXX.XXX.XX.XXX:8081/cx/api/cxsj/syscqyinfo/list"
data = {"page":1,"rows":100,"conditionItems":[]}
print(headers)
res = requests.session().post(url=url, data=json.dumps(data), headers=headers, verify=False)  #
res.encoding = 'UTF-8'
print(res.text)

仅作为笔记记录,如有问题请各位大佬来指导


http://www.niftyadmin.cn/n/5242403.html

相关文章

Linux定时器

setitimer实现定时器 通过itimerval结构体以及setitimer函数产生的信号,系统随之使用signal信号处理函数来处理产生的定时信号,从而实现定时器。 itimerval结构体 struct itimerval {struct timeval it_interval;struct timeval it_value; };//it_int…

Java解决好三元组问题

Java解决好三元组问题 01 题目描述 给你一个整数数组 arr &#xff0c;以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件&#xff0c;则认为它是一个 好三元组 。 0 < i < j < k < arr.length|arr…

React面试题(1)

1、什么是React&#xff1f; React是一个用于构建用户界面的JavaScript库。 2、React的特点是什么&#xff1f; React的主要特点包括&#xff1a; 组件化虚拟DOM单向数据流JSX语法高效的性能生态系统丰富 3、什么是JSX&#xff1f; JSX是一种JavaScript的语法扩展&#x…

程序员养生指南:护腰护颈+保持精力

一、护腰护颈攻略 作为程序员&#xff0c;长时间坐在电脑前&#xff0c;保持一种姿势&#xff0c;不仅会让你的身体感到僵硬和疼痛&#xff0c;还会影响你的效率和心情。因此&#xff0c;保护腰颈是每个程序员都需要关注的问题。下面我们将为你介绍一些护腰护颈的攻略&#xf…

拷贝构造函数:对象复制的重要工具

拷贝构造函数 功能&#xff1a; 使用一个已经存在的对象来初始化一个新的同一类型的对象。 声明&#xff1a; 只有一个参数并且参数为该类对象的引用 如果类中没有说明拷贝构造函数&#xff0c;则系统会自动生成一个缺省复制构造函数&#xff0c;作为该类的公有成员。 当函数…

【harmonyOS开发】健康生活应用

一、业务需求 用户可以创建最多6个健康生活任务&#xff08;早起&#xff0c;喝水&#xff0c;吃苹果&#xff0c;每日微笑&#xff0c;刷牙&#xff0c;早睡&#xff09;&#xff0c;并设置任务目标、是否开启提醒、提醒时间、每周任务频率。用户可以在主页面对设置的健康生活…

180天Java从入门到就业-Day04-01Java程序流程控制介绍、Java分支结构if语句

1.程序流程控制介绍 1.1 流程控制结构介绍 流程控制语句是用来控制程序中各语句执行顺序的语句,可以将语句组合成完成一定功能的逻辑模块。 一个程序会包含三种流程控制结构:顺序结构、分支结构、循环结构 顺序结构在没有使用程序流程控制语句(if-else语句、switch-case语…

【刷题笔记】串联所有单词的子串||暴力通过||滑动窗口

串联所有单词的子串 1 题目描述 https://leetcode.cn/problems/substring-with-concatenation-of-all-words/ 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 …