Python灰帽编程——网页信息爬取

这篇具有很好参考价值的文章主要介绍了Python灰帽编程——网页信息爬取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网页信息爬取

1. 相关模块

1.1 requests 模块

requests 模块:主要是用来模拟浏览器行为,发送HTTP 请求,并处理HTTP 响应的功能。

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

import requests     # 被认为,最贴近与人的操作的模块
import urllib
import urllib2
import urllib3

requests 模块处理网页内容的基本逻辑:

  • 定义一个URL 地址。
  • 发送HTTP 请求。
  • 处理HTTP 响应。
1.1.1 模块中的请求方法
请求方法 说明
requests.get() 常规的请求方法 (GET 方法)
requests.post() 带有请求正文的 (POST 方法)
requests.head() 只返回响应头部,没有响应正文
requests.options() 测试服务器所支持的方法
requests.put() 向服务器写入文件
requests.delete() 请求删除服务器端文件
1.1.2 请求方法中的参数
参数名字 参数含义
url 请求URL 地址
headers 自定义请求头部
params 发送GET 参数
data 发送POST 参数
timeout 请求延时
files 文件上传数据流
1.1.3 响应对象中属性
方法名 解释
response.text 响应正文(文本方式)
response.content 响应正文(二进制)
response.status_code 响应状态码
response.url 发送请求的URL 地址
response.headers 响应头部
response.request.headers 请求头部
response.cookies cookie 相关信息

1.2 RE 模块

从网页内容中提取图片地址。

正则表达式(RE),是一些由字符和特殊符号组成的字符串,它们能按某种模式匹配一系列有相似特征的字符串。

  • 从哪一个字符串中搜索什么内容。
  • 规则是什么(模式问题)。
>>> import re
>>> s = "I say food not Good"
>>> re.findall('ood',s)
['ood', 'ood']
>>> re.findall(r"[fG]ood", s)
['food', 'Good']
>>> re.findall(r"[a-z]ood", s)
['food']
>>> re.findall(r"[A-Z]ood", s)
['Good']
>>> re.findall(r"[0-9a-zA-Z]ood", s)
['food', 'Good']
>>> re.findall(r"[^a-z]ood",s)
['Good']
>>> re.findall('.ood',s)
['food', 'Good']
>>> re.findall(r'food|Good|not',s)
['food', 'not', 'Good']
>>> re.findall(r".o{1,2}.", s)
['food', 'not', 'Good']
>>> re.findall('o*',s)
['', '', '', '', '', '', '', 'oo', '', '', '', 'o', '', '', '', 'oo', '', '']
>>> 

>>> s = "How old are you? I'm 24!"
>>> re.findall(r"[0-9]{1,2}", s)
['24']
>>> re.findall(r"\d{1,2}", s)
['24']
>>> re.findall(r"\w", s)
['H', 'o', 'w', 'o', 'l', 'd', 'a', 'r', 'e', 'y', 'o', 'u', 'I', 'm', '2', '4']
>>> 

>>> s = 'I like google not ggle goooogle and gogle'
>>> re.findall('o+',s)
['oo', 'o', 'oooo', 'o']
>>> re.findall('go+',s)
['goo', 'goooo', 'go']
>>> re.findall('go+gle',s)
['google', 'goooogle', 'gogle']
>>> re.findall('go?gle',s)
['ggle', 'gogle']
>>> re.findall('go{1,2}gle',s)
['google', 'gogle']
>>>
1.2.1 匹配单个字符
记号 说明
. 匹配任意单个字符(换行符除外)\. 表示真正的
[…x-y…] 匹配字符集合里的任意单个字符
[^…x-y…] 匹配不在字符组里的任意单个字符
\d 匹配任意数字,与[0-9] 同义
\w 匹配任意数字、字母、下划线,与[0-9a-zA-Z_] 同义,无法匹配特殊符号
\s 匹配空白字符,与[\r\v\f\t\n] 同义
1.2.2 匹配一组字符
记号 说明
字符串 匹配字符串值
字符串1|字符串2 匹配字符串1或字符串2
* 左邻第一个字符出现0 次或无穷次
+ 左邻第一个字符最少出现1 次或无穷次
? 左邻第一个字符出现0 次或1 次
{m,n} 左邻第一个字符出现最少m 次最多n 次
1.2.3 其他元字符
记号 说明
^ 匹配字符串的开始 集合取反
$ 匹配字符串的结尾
\b 匹配单词的边界,单词包括\w 中的内容
() 对字符串分组(单独匹配括号中的字符)
\数字 匹配已保存的子组
1.2.4 核心函数
核心函数 说明
re.findall() 在字符串中查找正则表达式的所有(非覆盖)出现;返回一个匹配对象的列表。
re.match() 尝试用正则表达式模式从字符串的开头匹配 如果匹配成功,则返回一个匹配对象 否则返回None
re.search() 在字符串中查找正则表达式模式的第一次出现 如果匹配成,则返回一个匹配对象 否则返回None
re.group() 使用match 或者search 匹配成功后,返回的匹配对象 可以通过group() 方法获取得匹配内容
re.finditer() 和findall() 函数有相同的功能,但返回的不是列表而是迭代器 对于每个匹配,该迭代器返回一个匹配对象
re.split() 根据正则表达式中的分隔符把字符分割为一个列表,并返回成功匹配的列表字符串也有类似的方法,但是正则表达式更加灵活
re.sub() 把字符串中所有匹配正则表达式的地方换成新的字符串
>>> m = re.match('goo','I like google not ggle goooogle and gogle')
>>> type(m)
<class 'NoneType'>
>>> m = re.match('I','I like google not ggle goooogle and gogle')
>>> type(m)
<class 're.Match'>
>>> m.group()
'I'
>>> m = re.search('go{3,}','I like google not ggle goooogle and gogle')
>>> m.group()
'goooo'
>>> m = re.finditer('go*','I like google not ggle goooogle and gogle')
>>> list(m)
[<re.Match object; span=(7, 10), match='goo'>, <re.Match object; span=(10, 11), match='g'>, <re.Match object; span=(18, 19), match='g'>, <re.Match object; span=(19, 20), match='g'>, <re.Match object; span=(23, 28), match='goooo'>, <re.Match object; span=(28, 29), match='g'>, <re.Match object; span=(36, 38), match='go'>, <re.Match object; span=(38, 39), match='g'>]
>>> m = re.split('\.|-','hello-world.ajest')
>>> m
['hello', 'world', 'ajest']
>>> s = "hi x.Nice to meet you, x."
>>> s = re.sub('x','WUHU',s)
>>> s
'hi WUHU.Nice to meet you, WUHU.'
>>>

2. 网页信息爬取

通过python 脚本爬取网页图片:

  • 获取整个页面所有源码。
  • 从源码中筛选出图片的地址。
  • 将图片下载到本地。

2.1 获取网页HTML 源代码

# 01 - 获取网页源代码.py

import requests

url = "http://192.168.188.187/pythonSpider/"

# 定义了一个请求头(headers)字典。请求头包含了一些信息,例如用户代理(User-Agent),用于模拟浏览器发送请求。
headers = {
    "User-Agent":   "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36"
}

# 接收一个URL作为参数,并利用requests.get()方法发送GET请求获取网页内容。
def getHtml(url):
    res = requests.get(url = url, headers = headers)
    # 显示页面的编码
    print(res.encoding)
	# 字符串以二进制的形式显示
    return res.content

# 调用getHtml函数并打印返回的HTML内容。
print(getHtml(url = url).decode("utf8"))

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

2.2 提取图片地址

网页中的图片地址如下:

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

# 02 - 提权图片地址.py
import requests
import re

url = "http://192.168.188.187/pythonSpider/"

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0"
}

# 获取页面源码
def get_html(url):
    res = requests.get(url =url,headers=headers)
    # 字符串以二进制的形式返回
    return res.content

# 从源码中获取图地址
# 利用正则表达式匹配出HTML中的图片路径并返回列表。
def get_html_path_list(html):
    img_path_list = re.findall(r"style/\w*\.jpg",html)
    return img_path_list

# 在主程序中调用getHtml函数获取网页内容
html = get_html(url = url)

# 将其解码为字符串,然后将解码后的内容传递给getImgPathList函数。
img_path_list = get_html_path_list(html.decode())

# 获取图片路径列表。
for imgPath in img_path_list:
    img_url = url + imgPath
    print(img_url)

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

2.3 下载图片

# 03 - 下载图片.py

import requests

# 定义了一个URL变量,指定要请求的目标网址。
url = "http://192.168.188.187/pythonSpider/"

# 定义了一个图片路径变量,以及一个完整的图片URL,通过拼接URL和图片路径得到。
img_path = "style/u401307265719758014fm173s0068CFB1485C3ECA44B8C5E5030090F3w21.jpg"

img_url = url + img_path

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0"
}

def get_html(url):
    res = requests.get(url = url, headers = headers)

    return res.content

# 接收一个图片保存路径和图片URL作为参数。在函数内部,打开文件以二进制写入模式,利用get_html函数获取图片内容,并将其写入文件。
def save_img(img_save_path, img_url):
    with open(img_save_path, "wb") as f:
        f.write(get_html(url = img_url))

# 在主程序中调用save_img函数,传递图片保存路径和图片URL,将图片内容下载并保存到本地。
save_img("./images/1.jpg", img_url)

2.4 完整脚本

import requests
import re
import time

url = "http://192.168.188.187/pythonSpider/"

headers = {
    "User-Agent":   "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36"
}

# 定义了一个名为get_html的函数,用于发送HTTP GET请求获取指定URL的响应内容,并返回其二进制形式的内容。
def get_html(url):
    res = requests.get(url = url, headers = headers)
    return res.content

# 接受一个字符串类型的HTML内容作为参数,并使用正则表达式 re.findall() 来提取页面源代码中的图片路径,然后将其以列表形式返回。
def get_img_path_list(html):
    img_path_list = re.findall(r"style/\w*\.jpg", html)

    return img_path_list

# 接受两个参数 img_save_path 和 img_url,函数内部使用二进制写入模式打开指定的本地文件路径 img_save_path,然后将通过调用 get_html 函数获取到的图片内容写入该文件。
def img_download(img_save_path, img_url):
    with open(img_save_path, "wb") as f:
        f.write(get_html(url = img_url))

# 调用 get_html 函数,传入 url 参数,发送HTTP请求并获取网页响应的内容,然后使用 .decode() 方法将其解码为字符串形式。        
html = get_html(url = url).decode()

# 调用 get_img_path_list 函数,传入 html 参数,该参数是上一步获取到的网页内容,函数将返回一个包含图片路径的列表。
img_path_list = get_img_path_list(html = html)


for img_path in img_path_list:
    # 对于每个图片路径 img_path,拼接出完整的图片链接 img_url
    img_url = url + img_path
    
    # 使用当前时间戳构造出本地保存路径 img_save_path
    img_save_path = f"./images/{time.time()}.jpg"
    
    # 传入图片保存路径和图片链接进行下载。
    img_download(img_save_path = img_save_path, img_url = img_url)

3. requests 模块基本用法

3.1 获取浏览器指纹

import requests

url = "http://192.168.188.187/pythonSpider/index.html"

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0"
}

# 默认同一个会话脚本中的请求可能有多个,requests.Session可以维护持久化的连接和会话状态
req = requests.Session()    # 保持一致性

# 调用 requests 库的 get() 方法,传入 url 和 headers 参数,发送HTTP GET请求,并将返回的响应对象赋值给变量 res。
res = req.get(url = url , headers = headers)

# print(res.text)            # 响应正文内容的字符串
print("====================================")
print(res.status_code)       # 打印响应状态码
print("====================================")
print(res.headers)           # 打印响应头信息
print("====================================")
print(res.url)               # 请求的URL的地址
print("====================================")
print(res.encoding)          # 显示页面的编码
print("====================================")
print(res.request.headers)   # 打印request属性的headers字段

3.2 发送GET 参数

import requests

url = "http://192.168.188.187/pythonSpider/index.html"

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0"
}

# 默认同一个会话脚本中的请求可能有多个,requests.Session可以维护持久化的连接和会话状态
req = requests.Session()    # 保持一致性

params = {
    "username" : "WUHU",
    "password" : "123456"
}

# 调用 requests 库的 get() 方法,传入 url、headers 和 params 参数,发送HTTP GET请求,并将返回的响应对象赋值给变量 res。在这个例子中,params 参数会被自动构造成查询字符串并附加在URL后面。
res = req.get(url = url , headers = headers, params = params)

print(res.url)

3.3 发送POST 参数

import requests

url = "http://192.168.188.187/pythonSpider/index.html"

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0"
}

# 默认同一个会话脚本中的请求可能有多个,requests.Session可以维护持久化的连接和会话状态
req = requests.Session()    # 保持一致性

# 设置请求的表单数据,这里使用字典表示用户名和密码。
data = {
    "username" : "WUHU",
    "password" : "123456"
}

# 使用Session对象的post方法发送POST请求。传入URL、请求头和表单数据作为参数。请求头和表单数据将被添加到HTTP请求中。
res = req.post(url = url , headers = headers, data = data)

print(res.url)
print(res.request.body)

3.4 文件上传

模拟文件上传,以DVWA靶场中的文件上传漏洞Low级别为例

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

使用bp抓取数据包查看需要哪些参数

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

脚本内容如下:

import requests
import re
import bs4

url = "http://192.168.188.187/dvwa_2.0.1/vulnerabilities/upload/"

req = requests.Session()

# 还得携带Cookie信息,因为在上传文件的时候,只有登录成功后才可以进行上传文件。
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.93 Safari/537.36",
    "Cookie": "security=low; security=low; PHPSESSID=jvrc2c84pq9dnvdcqvd545t4o1"
}

# 添加变量MAX_FILE_SIZE,Upload
data= {
    "MAX_FILE_SIZE" : "100000",
    "Upload" : "Upload"
}

# 字典的key就是文件域的名字
# value包含文件名,文件类型,文件内容。以元组的显示表现,因为文件的信息不可以修改
# 文件内容前面添加一个b表示二进制数据
# 注意顺序是文件名,文件内容,文件类型
files= {
    "uploaded" : ("wuhu.php", b"<?php phpinfo();?>", "image/png")
}

res= req.post(url= url, headers= headers, data= data, files= files)

# print(res.text)

# 正则匹配
# file_path = re.findall(r"<pre>(.*) succesfully uploaded!</pre>", res.content.decode())[0]
# print(file_path)


# 在文档中解析pre标签
html = res.text
html = bs4.BeautifulSoup(html,"lxml")   # 解析为lxml格式

# 搜索pre标签
pre = html.find_all("pre")

# 从标签中获取文本
pre = pre[0].text

# 对字符串进行切片
file_path = pre[0:pre.find(" ")]

# 字符串拼接
file_path = url + file_path

print(file_path)

脚本执行结果

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

页面访问效果

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

3.4.1 注意事项
  • files字典的key就是文件域的名字

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

  • 文件内容前面添加一个 b 表示二进制数据。

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

  • 需要添加两个信息分别是:MAX_FILE_SIZE,Upload

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

  • 还得携带Cookie信息,因为在上传文件的时候,只有登录成功后才可以进行上传文件。

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

  • files字典的顺序是文件名,文件内容,文件类型

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

  • 在提取文件的上传路径时候可以采用正则匹配也可以使用Python中的第三方库 BeautifulSoup

BeautifulSoup 是一个用于解析 HTML 和 XML 文档的库,它提供了方便的方法和工具来从网页中提取数据。通过使用 BeautifulSoup,可以轻松地遍历、搜索和操作 HTML/XML 树结构,从而实现对网页内容的抽取和分析。

3.5 服务器超时

说明:服务器超时脚本可以编写SQL注入中的延时注入脚本。

sleep.php文件

<?php
	sleep(8);
	echo "wuhu haha heihei";
?>

服务器超时脚本

# 09 - 服务器超时.py
import requests

url = "http://192.168.188.187/php/functions/sleep.php"

headers= {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.93 Safari/537.36"
}

def get_timeout(url):
    try:
        req =  requests.Session()
        # timeout = 5表示在5秒之内没有等到服务器的回应就不等了
        res = req.get(url= url , headers = headers, timeout = 5)
    except:
        return "timeout!"
    else:
        return res.text

print(get_timeout(url))

如果sleep.php中延时8秒那么服务器超时脚本就会输出"timeout!"。

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块

延时3秒服务输出"wuhu haha heihei"。

Python灰帽编程——网页信息爬取,python灰帽编程,python,开发语言,网络安全,系统安全,python脚本,爬虫,requests模块文章来源地址https://www.toymoban.com/news/detail-728408.html

到了这里,关于Python灰帽编程——网页信息爬取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python爬虫开发实战②】使用urllib以及jsonpath爬取即将上映电影信息

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️首先,我们前面讲了多篇基础内容: 【Python爬虫开发基础④】爬虫原理 【Python爬虫开发基础⑤】HTML概述与基本标签详解 【P

    2024年02月12日
    浏览(48)
  • Python动态网页爬取

    预计更新 一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 3.4 Python的函数和模

    2024年02月07日
    浏览(58)
  • python爬虫 爬取网页图片

    目录 一:爬虫基础 二:安装html解析的python工具 三:爬取网页图片 爬虫基本过程: 1.请求标头 headers 2.创建一个会话 requests.Session 3.确定请求的路径 4.根据路径获取网页资源(HTML文件) 5.解析html文件BeautifulSoup div a 标签 获取对应的图片 6.建立网络连接进行下载  创建出下载的图

    2024年02月02日
    浏览(63)
  • Python小姿势 - # 如何使用Python爬取网页数据

    如何使用Python爬取网页数据 今天我们来学习一下如何使用Python来爬取网页数据。 首先,我们需要准备一个空白的文件,在文件中输入以下代码: ``` import requests url = \\\'http://www.baidu.com\\\' r = requests.get(url) print(r.text) ``` 上面的代码中,我们首先导入了 requests 库,然后声明了一个

    2024年02月04日
    浏览(51)
  • Python网页爬虫爬取起点小说——re解析网页数据

    !!注意:我们获取到的网页响应数据,可能会与网页源代码中呈现的格式不同。因为有些网页文件是用JavaScript加载的,浏览器会自动将其解析成html文档格式,而我们获取到的内容是JavaScript格式的文档。所以获取到响应数据之后先要查看内容是否与网页源码中的一致,不一

    2024年02月04日
    浏览(65)
  • 用 Python 爬取网页 PDF 和文档

    以 https://reader.jojokanbao.cn/rmrb 上 PDF 的下载为例 参考博客:selenium+Python(Js处理日历控件) 网页的日期框中可以直接输入日期 找到输入框对应的标签,根据 class name 进行内容清楚和输入(如果标签有 id 属性可以根据 id 进行输入框确定),代码如下 输入日期后需要回车才能刷新

    2024年02月04日
    浏览(40)
  • Python实战:用Selenium爬取网页数据

    网络爬虫是Python编程中一个非常有用的技巧,它可以让您自动获取网页上的数据。在本文中,我们将介绍如何使用Selenium库来爬取网页数据,特别是那些需要模拟用户交互的动态网页。 Selenium是一个自动化测试工具,它可以模拟用户在浏览器中的操作,比如点击按钮、填写表

    2024年02月06日
    浏览(48)
  • Python 爬虫:如何用 BeautifulSoup 爬取网页数据

    在网络时代,数据是最宝贵的资源之一。而爬虫技术就是一种获取数据的重要手段。Python 作为一门高效、易学、易用的编程语言,自然成为了爬虫技术的首选语言之一。而 BeautifulSoup 则是 Python 中最常用的爬虫库之一,它能够帮助我们快速、简单地解析 HTML 和 XML 文档,从而

    2024年02月04日
    浏览(65)
  • python基于Selenium方法爬取网页图片

    selenium是一个用于web应用程序的自动化测试工具,通过Selenium可以写出自动化程序,拟人在浏览器对网页进行操作。selenium可以编写出自动化程序,简化手动保存的部分。 requests库可以向第三方发送http请求,是一个用于网络请求的模块,通常以GET方式请求特定资源,请求中不应

    2024年02月03日
    浏览(61)
  • Python爬取网页Flex渲染的动态内容

    我最近使用Python爬取网页内容时遇到Flex渲染的动态页面,比如下图的课程目录标题,此时按鼠标右键,菜单里没有复制链接的选项。 我的目的是:获取各个视频标题、链接。 按F12进入开发者模式分析网页,可见有多个flex标签,像这种通过flex动态渲染的网页,视频链接隐藏

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包