XieJava's blog

记录最好的自己


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

Python爬取淘宝商品评价信息实战

发表于 2024-03-16 | 更新于: 2025-07-21 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 2.1k | 阅读时长 ≈ 9

Python爬虫

前期出了一个《爬取京东商品评价信息实战》的教程,最近又有网友提到要出一个爬淘宝商品评论的教程。说实话淘宝的反爬机制做得比京东要严,所以用爬取京东商品评价信息的方式取爬取淘宝商品评价不太可行。本文还是介绍通过Selenium模拟登录后来进行淘宝商品评价信息的爬取。
Selenium安装与配置及如何模拟登录淘宝见《Selenium安装与配置》及《Selenium实战-模拟登录淘宝并爬取商品信息》

一、分析需要爬取的页面

淘宝的商品评价信息在商品详情页面,需要登录淘宝后,访问到商品详情页,并且需要点击“宝贝评价”才能看到相应的商品评价信息。
淘宝商品评价页面分析

我们还是要通过chrome浏览器的调试模式来分析需要点击哪个页面元素才能看到具体的评价信息。通过分析可以得知要点击<div class="Tabs--title--1Ov7S5f Tabs--active--2TTlc9s"><span data-spm-anchor-id="pc_detail.27183998/evo365560b447259.202205.i0.65b87dd6RabS41">宝贝评价</span><div class="Tabs--line--1ibdRMv"></div></div> 这个元素才能进行切换到宝贝评价。
页面元素分

具体的评价信息是在<div class="Comment--content--15w7fKj" data-spm-anchor-id="pc_detail.27183998/evo365560b447259.202207.i0.65b87dd6RabS41">很好很喜欢下次还会买的,之前在这店买过iPhone12 Air pos pro iPad Air3 距离上个平板时隔三年又买了iPad Air5 物流也很快,唯一的不足就是要花我自己的钱买😂哈哈哈非常推荐 </div> 这些<div class="Comment--content--15w7fKj">......</div>元素里。
页面元素分

分析完页面后,就可以开始思考如何编码了。

二、实现爬取商品评价信息的代码

通过上面的分析,我们要获取商品评价信息,需要让Selenium进行模拟登录->访问商品列表页面->访问商品详情页面->点击“宝贝评价”->获取并解析商品评价信息。
前面让Selenium进行模拟登录->访问商品列表页面在《Selenium实战-模拟登录淘宝并爬取商品信息》已有介绍。这里主要介绍后面的部分,访问商品详情页面->点击“宝贝评价”->获取并解析商品评价信息。
获取并解析商品评价信息有两种方式,一种是通过解析显示评价信息的元素获取,一种是通过mitmproxy代理进行流量抓包获取。

1、通过解析显示评价信息的元素获取商品评价信息

selenium_taobao.py的部分代码参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 解析获取商品信息
def get_products():
"""提取商品数据"""
html = driver.page_source
doc = pq(html)
items = doc('.Card--doubleCardWrapper--L2XFE73').items()
for item in items:
product = {'url': item.attr('href'),
'price': item.find('.Price--priceInt--ZlsSi_M').text(),
'realsales': item.find('.Price--realSales--FhTZc7U-cnt').text(),
'title': item.find('.Title--title--jCOPvpf').text(),
'shop': item.find('.ShopInfo--TextAndPic--yH0AZfx').text(),
'location': item.find('.Price--procity--_7Vt3mX').text()}
print(product)
item_href=item.attr('href') # 得到商品的详情访问页面
if item_href.find('https:')>=0:
item_url =item_href
print(item_url)
else:
item_url = "https:" + item.attr('href')
# 爬取商品评价
get_prod_comments(item_url)
time.sleep(sleeptime)

# 爬取商品评价
def get_prod_comments(item_url):
driver.get(item_url)
print('跳转至详情页.......'+item_url)
ele = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='Tabs--title--1Ov7S5f ']/span")))
time.sleep(sleeptime)
# 向下滚动至目标元素可见
js = "arguments[0].scrollIntoView();"
driver.execute_script(js, ele)
print('向下滚动至-宝贝评价-元素可见.......')
driver.execute_script("arguments[0].click();", ele)
print('点击-宝贝评价.......')
ele_comments=driver.find_elements(By.CSS_SELECTOR,".Comment--content--15w7fKj")
print('提取宝贝评价信息.......')
for ele_comment in ele_comments:
print(ele_comment.text)

在解析获取商品信息的方法中通过item_href=item.attr(‘href’) # 得到商品的详情访问页面
在爬取商品评价get_prod_comments(item_url)的方法中,通过driver.get(item_url)跳转到了商品详情页面。通过ele = wait.until(EC.element_to_be_clickable((By.XPATH, “//div[@class=’Tabs–title–1Ov7S5f ‘]/span”)))定位到“宝贝评价”的点击按钮,通过driver.execute_script(“arguments[0].click();”, ele)进行点击事件,然后通过ele_comments=driver.find_elements(By.CSS_SELECTOR,”.Comment–content–15w7fKj”)找到显示评价信息的元素,循环后解析具体的评价文本信息。
效果如下:
解析获取商品信息

2、通过mitmproxy代理进行流量抓包获取商品评价信息

既然通过Selenium进行模拟点击“宝贝评价”访问了商品评价信息,也可通过流量抓包的方式来获取商品评价信息。
同样chrome浏览器的调试模式来分析商品评价是从哪些接口返回的数据,这里可以看到宝贝评价是通过https://h5api.m.taobao.com/h5/mtop.alibaba.review.list.for.new.pc.detail/1.0/....接口返回的数据。
调试模式来分析商品评价

切换到Response,可以看到接口返回的宝贝评价JSON串。
宝贝评价JSON串

有了这些信息后,就可以写mitmproxy代理抓包的代码了。
taobao_scripts.py代码如下:

1
2
3
4
5
6
7
8
9
import json

# 抓取淘宝商品评价信息
def response(flow):
url = 'https://h5api.m.taobao.com/h5/mtop.alibaba.review.list.for.new.pc.detail'
if flow.request.url.startswith(url):
text = flow.response.text
json_data = json.loads(text)
print(json_data)

在控制台运行 mitmdump -s taobao_scripts.py 启动mitmproxy代理服务。具体参考《Selenium实战-模拟登录淘宝并爬取商品信息》设置好chrome浏览器的mitmproxy代理。然后运行selenium_taobao.py通过Selenium驱动浏览器,进行自动模拟登录->访问商品列表页面->访问商品详情页面->点击“宝贝评价”。
在运行mitmdump的控制台可以看到通过抓包获取的淘宝商品评价的数据信息。
效果如下图:
抓包获取的淘宝商品评价的数据信息效果

三、附-完整代码

selenium_taobao.py完整代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common import TimeoutException, NoSuchElementException
from urllib.parse import quote
from pyquery import PyQuery as pq
import time
sleeptime=5
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "localhost:9222") #此处端口保持和命令行启动的端口一致
driver = Chrome(options=chrome_options)
driver.implicitly_wait(5) # 隐式等待
wait = WebDriverWait(driver, 10) # 显示等待

# 模拟淘宝登录
def login_taobao():
print('开始登录...')
try:
login_url='https://login.taobao.com/member/login.jhtml'
driver.get(login_url)
check_login_type()
input_login_id = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-id')))
input_login_password = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-password')))
input_login_id.send_keys('your account')
input_login_password.send_keys('your password')
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit.password-login')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
return is_loging
except TimeoutException:
print('login_taobao TimeoutException')
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
if is_loging:
return is_loging
else:
login_taobao()

# 判断登录模式,如果是扫描登录则切换到用户名密码登录模式
def check_login_type():
print('判断登录模式')
try:
wait.until(EC.presence_of_element_located((By.ID, 'fm-login-id')))
except TimeoutException:
change_type = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.iconfont.icon-password')))
change_type.click() # 切换到用户密码模式登录
print('切换到用户密码模式登录...')

# 解析获取商品信息
def get_products():
"""提取商品数据"""
html = driver.page_source
doc = pq(html)
items = doc('.Card--doubleCardWrapper--L2XFE73').items()
for item in items:
product = {'url': item.attr('href'),
'price': item.find('.Price--priceInt--ZlsSi_M').text(),
'realsales': item.find('.Price--realSales--FhTZc7U-cnt').text(),
'title': item.find('.Title--title--jCOPvpf').text(),
'shop': item.find('.ShopInfo--TextAndPic--yH0AZfx').text(),
'location': item.find('.Price--procity--_7Vt3mX').text()}
print(product)
item_href=item.attr('href') # 得到商品的详情访问页面
if item_href.find('https:')>=0:
item_url =item_href
print(item_url)
else:
item_url = "https:" + item.attr('href')
# 爬取商品评价
get_prod_comments(item_url)
time.sleep(sleeptime)

# 爬取商品评价
def get_prod_comments(item_url):
driver.get(item_url)
print('跳转至详情页.......'+item_url)
ele = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='Tabs--title--1Ov7S5f ']/span")))
time.sleep(sleeptime)
# 向下滚动至目标元素可见
js = "arguments[0].scrollIntoView();"
driver.execute_script(js, ele)
print('向下滚动至-宝贝评价-元素可见.......')
driver.execute_script("arguments[0].click();", ele)
print('点击-宝贝评价.......')
ele_comments=driver.find_elements(By.CSS_SELECTOR,".Comment--content--15w7fKj")
print('提取宝贝评价信息.......')
for ele_comment in ele_comments:
print(ele_comment.text)


# 自动获取商品信息并自动翻页
def index_page(url,cur_page,max_page):
print(' 正在爬取:'+url)
try:
driver.get(url)
get_products()
next_page_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//button/span[contains(text(),"下一页")]')))
next_page_btn.click()
do_change = wait.until(EC.url_changes(url))
if do_change and cur_page<max_page:
new_url=driver.current_url
cur_page = cur_page + 1
index_page(new_url,cur_page,max_page)
except TimeoutException:
print('---index_page TimeoutException---')


if __name__ == '__main__':
is_loging=login_taobao()
if is_loging:
print('已经登录')
KEYWORD = 'iPad'
url = 'https://s.taobao.com/search?page=1&q=' + quote(KEYWORD) + '&tab=all'
max_page=1
index_page(url,1,max_page)

作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

数据安全之认识数据库加密系统

发表于 2024-03-15 | 更新于: 2025-07-21 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 2.9k | 阅读时长 ≈ 9

数据库作为计算机信息系统的核心组成部分,在整个信息系统的构建中起着关键的作用。自20世纪60年代起,数据库技术经过短短几十年的飞速发展,现已成为整个信息系统的核心内容,并得到了广泛的应用。然而,随着数据库系统集中处理大量数据信息的任务日益繁重,其安全问题也日渐突出。

信息安全的关键在于数据的安全,而数据的安全则主要通过数据加密技术来实现。随着网上购物等电子商务的兴起和繁荣,以数据库为代表的信息安全已成为很多企业的共识。越来越多的企业和机构开始重视数据库的数据安全问题,因为一旦数据泄露或遭到非法访问,将可能导致严重的经济损失和声誉损害。

为了增强普通关系数据库管理系统的安全性,数据库加密系统应运而生。其目的是为了提供一个安全适用的数据库加密平台,对通信和数据库存储的内容实施有效保护。通过采用先进的加密技术和严格的密钥管理策略,数据库加密系统可以确保数据在存储和传输过程中的机密性、完整性和可用性,从而有效地防止数据泄露和非法访问。

本文让我们一起来认识数据库加密系统

一、什么是数据库加密系统

数据库加密系统是一款基于透明加密技术和主动防御机制的数据库防泄漏系统。
它主要实现对数据库中的敏感数据加密存储、访问控制增强、应用访问安全、安全审计以及三权分立等功能。通过使用特定的加密算法和密钥管理技术,数据库加密系统能够确保数据在存储和传输过程中的安全性,有效防止明文存储引起的数据泄密、外部黑客攻击以及内部高权限用户的数据窃取。数据库加密系统旨在从根本上解决数据库敏感数据泄漏问题,实现数据的高度安全和应用的完全透明。

二、数据库加密系统的工作原理

数据库加密系统的原理主要基于加密技术和密钥管理。其核心目的是确保数据库中存储的敏感数据不被未经授权的人员或程序读取或篡改。以下是数据库加密系统原理的详细解释:

  1. 数据加密
    数据加密是数据库加密系统的核心功能。它使用特定的加密算法,将数据库中的明文数据(即原始数据)转换成密文数据。这个转换过程依赖于一个或多个密钥,这些密钥是加密算法的输入参数,用于控制加密的强度和复杂性。通过这种方式,即使数据被非法获取,没有正确的密钥也无法解密和读取原始数据。
  2. 密钥管理
    密钥管理是数据库加密系统中至关重要的环节。它涉及到密钥的生成、存储、分发、更新和销毁等过程。密钥的安全性直接关系到整个加密系统的安全性。因此,密钥管理通常采用多种安全措施,如使用硬件安全模块(HSM)存储密钥、实施密钥的定期更换和备份、以及使用强密码保护密钥文件等。
  3. 透明加密
    透明加密是数据库加密系统的一个重要特性。它允许应用程序在不需要修改的情况下,对数据库中的敏感数据进行加密和解密操作。这意味着应用程序无需关心数据的加密细节,只需像处理普通数据一样处理加密数据。这种透明性大大简化了加密系统的部署和维护过程。
  4. 访问控制
    除了数据加密外,数据库加密系统还通常实施严格的访问控制策略。这些策略通过身份验证、授权和审计等手段,确保只有经过授权的用户才能访问和操作数据库中的敏感数据。这有助于防止内部人员滥用权限或外部攻击者入侵数据库。

数据库加密示意图如下:
数据库加密示意图

数据库加密示意图

数据库加密系统的原理基于数据加密、密钥管理、透明加密和访问控制等多个方面。这些技术和策略共同确保数据库中的敏感数据得到充分的保护,防止未经授权的访问和泄露。

三、数据库加密系统的核心功能

数据库加密系统核心功能包括数据加密、数据解密、权限控制、审计跟踪。

  1. 数据加密:通过对数据库中的敏感数据进行加密,使得即使数据被非法获取,也无法直接读取其内容。
  2. 数据解密:对经过加密的数据进行解密,使其能够被正常访问和使用。通常,只有具有特定权限的用户才能进行解密操作。
  3. 权限管理:增强对数据库访问的控制,确保只有经过授权的用户才能访问特定的数据。
  4. 审计跟踪:记录和跟踪数据库的所有操作,包括谁在何时访问了哪些数据,进行了哪些操作,以便在发生安全问题时进行追溯和审计。

四、数据库加密系统的特点和优势

数据库加密系统具有以下特点和优势:

  1. 数据安全性增强:通过数据加密技术,数据库加密系统能够确保敏感数据在存储和传输过程中的安全性。即使数据被非法获取,攻击者也无法直接读取其明文内容,从而防止数据泄露和滥用。
  2. 透明性:数据库加密系统通常设计为对最终用户透明,管理员可以根据需要进行明文和密文的转换工作。这使得用户无需改变原有的操作习惯,同时也降低了系统部署和维护的复杂性。
  3. 独立性:加密系统独立于数据库应用系统,这意味着无需改动数据库应用系统就能实现数据加密功能。这种独立性使得数据库加密系统能够灵活地集成到现有的信息系统中。
  4. 性能影响较小:数据库加密系统通常采用高效的加解密算法和优化的处理流程,以确保在加密数据的同时不会对数据库服务器的性能产生显著影响。这使得系统能够在实际应用中保持较高的响应速度和吞吐量。
  5. 灵活的加密方式:数据库加密系统支持多种加密方式,如字段级加密、记录级加密等,以满足不同场景下的安全需求。此外,系统还可以根据业务需求灵活调整加密策略,以适应数据的变化和新的安全威胁。
  6. 完善的密钥管理:密钥是数据加密和解密的关键。数据库加密系统通常具备完善的密钥管理功能,包括密钥的生成、存储、分发、更新和销毁等。这确保了密钥的安全性和可用性,从而提高了整个加密系统的安全性。
  7. 合规性支持:随着数据保护法规的日益严格,数据库加密系统能够帮助企业满足相关的合规性要求。通过实施数据加密和访问控制等安全措施,系统能够确保数据的合规性存储和使用,避免因违反法规而面临的经济和法律风险。

数据库加密系统通过增强数据安全性、提供透明性、独立性、较小的性能影响、灵活的加密方式、完善的密钥管理以及合规性支持等特点和优势,为企业和机构提供了一个安全、可靠的数据库环境。

五、数据库加密系统的部署方式

1、在线透明部署

通过在线透明的部署方式将数据库加密系统串接在数据库前,对数据库进行透明加密,提高数据库服务的可用性,部署如下图所示。
数据库加密系统串联部署图

数据库加密系统串联部署图

2、旁路代理模式

通过旁路部署的方式将数据库透明加密接入到数据库所在网络中,数据库透明加密采用反向代理模式,部署如下图所示。
数据库加密系统旁路代理部署图

数据库加密系统旁路代理部署图

六、数据库加密系统的应用场景

数据库加密系统有着广泛的应用场景,主要用于保护敏感数据的安全性和完整性,防止数据泄露和非法访问。以下是一些常见的应用场景:

  1. 金融行业:银行、证券、保险等金融机构在处理客户数据时,涉及大量敏感信息,如个人身份信息、账户信息、交易记录等。数据库加密系统能够确保这些敏感数据在存储和传输过程中的安全,防止被非法获取或篡改。
  2. 医疗领域:医疗机构存储着大量的患者个人信息、病历记录、检查结果等敏感数据。数据库加密系统可以保护这些数据的安全,防止数据泄露和滥用,维护患者的隐私权益。
  3. 政府机构:政府部门在政务处理、人口管理、税务征收等方面积累了大量的公民个人信息和敏感数据。通过数据库加密系统,政府可以确保这些数据的安全存储和合法使用,防止数据被非法获取或滥用。
  4. 电子商务:电商平台涉及大量用户信息、交易数据等敏感信息。数据库加密系统可以保护这些数据的安全,防止黑客攻击和数据泄露,维护电商平台的声誉和用户的信任。
  5. 教育行业:学校和教育机构存储着学生的个人信息、成绩记录、学籍资料等敏感数据。数据库加密系统可以保护这些数据的安全,防止数据被非法访问或篡改,维护教育公平和信息安全。

数据库加密系统适用于需要保护敏感数据安全的各个领域,确保数据在存储、传输和使用过程中的完整性和机密性。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

Python爬取京东商品评价信息实战

发表于 2024-03-11 | 更新于: 2025-07-21 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 1.2k | 阅读时长 ≈ 5

网络爬虫

上期介绍了通过《mitmproxy实战-通过mitmdump爬取京东金榜数据》,能够上京东金榜的商品一般评价都是比较好的,这次介绍如何爬取京东商品的评价信息。

一、分析商品评价的页面信息

1、请求参数分析

京东的商品评价信息是在商品的详情页面,我们随便访问一个京东的商品详情页面如https://item.jd.com/100087971268.html
在这里可以看到100087971268就是商品ID也是商品的skuId,这个是商品的唯一ID可以和很过信息关联。我们可以通过chrome浏览器的调试模式来分析商品评价信息的数据是如何获取和展示的。
通过chrome浏览器的调试模式可以看到,评价信息是通过https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&t=1710122207175&loginType=3&uuid=181111935.16953916127351737253418.1695391613.1709713566.1710121957.56&productId=100087971268&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1&bbtf=&shield=
这个接口来返回的,其中关键的信息包括functionId=pc_club_productPageComments,productId=100087971268,page=0&pageSize=10。
productId=100087971268表示是获取商品ID为100087971268的商品评价,page=0&pageSize=10表示当前页是0,每页显示10条记录。

分析详情页

2、接口返回信息分析

我们可以切换到Response的标签页,分析接口的返回信息

商品评价接口返回信息分析

在这里可以看到通过接口反馈的是一个json格式的数据,其中评价信息就在comments的节点里,我们只要解析这个json就可以得到具体的评价信息了。
通过参数的分析和返回结果的分析后,就可以开始编码实现了。

二、爬取京东商品评价信息代码实现

编码主要实现两个部分的内容
1、是要组织请求参数,将请求URL的一些参数用变量替换,如商品ID,当前页等。
2、是要解析返回的JSON数据,从JSON数据中解析获取需要的评价信息以及下载评价信息中的图片。
在组织请求参数的时候,有两个关键信息,一个是Cookie信息,一个是请求的URL,因为访问京东的接口要登录,所以需要Cookie的信息。这些信息都可以在登录到京东后在chrome浏览器的调试模式中可以拿到。

组织请求参数

1、具体代码

具体代码如下:
getJDProdComments.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import json
import os
import requests
from urllib.request import urlretrieve
import time

sleeptime = 1 # 休眠时间

# 浏览器访问伪装
headers = {
'cookie': '___jdu=16953916127351737253418; shshshfpa=423ebd76-fc1a-89d5-d47a-a981cedfdsf57-1686fds5177; shshshfpx=423ebd76-fc1a-89d5-d47a-a981ced31f57-1686405177; pinId=OlFK9xcJEZ3Ep3CJn7-LwLV9-x-f3wj7; pin=jd_5ab1043c91fdff; unick=xiejava; _tp=xRz2UIA0gXgQ0KtQA8IW%2BhMgOusl53MovCk%2FP0TxaIM%3D; _pst=jd_5ab1043c91bff; PCSYCityID=CN_430000_430100_0; areaId=18; ipLoc-djd=18-1482-48942-49058; b_dh=1179; b_dpr=1.100000023841858; b_webp=1; b_avif=1; autoOpenApp_downCloseDate_auto=1705396790105_1800000; b_dw=1555; __jdv=91748099|baidu|-|organic|notset|1705397493195; jsavif=1; mba_muid=16953916127351737253418; wlfstk_smdl=4d5qhwajihbur3xtxm1dghq2bwl9ebii; 3AB9D23F7A4B3C9B=ONVXQU6KOVA46KLMDJWYJ2CLCGZLCKH4NFEKT6ANBHIYQJBOWM3KHFJ3RT5NO6GKP2BQVONOJWLAKMJUMNJOAMEHJE; TrackID=1wLmzwr1GPygNiM7hoidalzvJbkLlnJRs7c_e2wlsv7h_VHaLyqnXTiW1_vIDBhlEusopAT977EO67KV2n2vMV9jMUQx8MO9jJQMMv8skxrE; thor=C1CD4973B7F47EE1FE45201B5AB2281DC485D58F5BD12AA8CEC6335A9B07F5E3F1BFD9D9DEA859A32AEDE0F33C45B55AA44327ACD87A8E174C645BE4BC987735B3DD969561D2D0AA492DD1FEC1A793AF265724B02F9850F35F0CA58E8E4A5A3C212B0734C80AD560D299EC59026506C127E953C92D271932DDDBF32BEC59091745A6CB143671358CC8A866B9A298AA865F60B9AC41AD05C6EB6781C131BD05DD; flash=2_7Kqrs87KZ1MjgKXGB8QJTs9NjTmYiJCdEV8xYwXCMezATHn-bD7kirFJuQx5ogyzo_yuQHefS-MTOx8D5rxn-5ZxA8-qMHyBfYw-1ULH1bq*; ceshi3.com=103; __jdc=181111935; token=7482844f43473090375d99ad860b4294,3,947486; __tk=mLVlrKTimJznoD3PmcVvYmZmldTlkbVaommnjmTankZOmmPDolZTZmTfSJvkYRmblDzYrLKC,3,947486; shshshsID=a8f2acdf15967d81d4c5d8b5a45b7796_1_1705476526446; 3AB9D23F7A4B3CSS=jdd03ONVXQU6KOVA46KLMDJWYJ2CLCGZLCKH4NFEKT6ANBHIYQJBOWM3KHFJ3RT5NO6GKP2BQVONOJWLAKMJUMNJOAMEHJEAAAAMNCZJJB5QAAAAAD26SPFPWINAFQMX; _gia_d=1; shshshfpb=BApXeNARaFehAyBNmDl1nYWazwPZ1Fa6NB8QBVlhW9xJ1Mt5if4S2; __jda=181111935.16953916127351737253418.1695391613.1705471486.1705476528.12; __jdb=181111935.1.16953916127351737253418|12.1705476528; joyya=1705472508.1705476529.27.0u3hno2',
'referer': 'https://item.jd.com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.37',
}

jd_prod_pic_save_path = 'jd_prod_pic' # 图片保存目录

page_range = 50 # 翻50页取500条记录

def getJDProdComment(prod_skuId):
big_pag_path = '//img30.360buyimg.com/shaidan/s616x405_jfs/' # 评价大图地址
tiny_pag_path = '//img30.360buyimg.com/n0/s128x96_jfs/' # 评价缩略图地址
for i in range(page_range):
comments_url = 'https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&t=1705853247039&loginType=3&uuid=181111935.16953916127351737253418.1695391613.1705847111.1705852812.35&productId='+str(prod_skuId)+'&score=0&sortType=5&page='+str(i)+'&pageSize=10&isShadowSku=0&fold=1&bbtf=&shield='
data = requests.get(comments_url, headers=headers)
if data:
content_data=data.content.decode('utf-8')
json_data=json.loads(content_data)
print(json_data)
if i == 0:
productCommentSummary=json_data.get('productCommentSummary')
print(prod_skuId, str(productCommentSummary))
hotCommentTagStatistics=json_data.get('hotCommentTagStatistics')
print(prod_skuId,str(hotCommentTagStatistics))
comments=json_data.get('comments')
if comments and len(comments)>0:
for comment in comments:
prod_comment_guid=comment.get('guid')
prod_comment_content=str(comment.get('content'))
prod_comment=str(comment)
images=comment.get('images')
savepath=os.path.join(jd_prod_pic_save_path,str(prod_skuId),'comments',prod_comment_guid)
if images and len(images)>0:
for image in images:
str_image_url=image.get('imgUrl').replace(tiny_pag_path, big_pag_path)
image_url='https:'+str_image_url
filename=os.path.basename(image_url)
downloadfile(image_url, savepath, filename) #下载图片
time.sleep(sleeptime)
print(prod_comment_guid,prod_skuId,prod_comment_content,prod_comment)
time.sleep(sleeptime)


def downloadfile(downloadurl,savepath,savefilename):
savefile = os.path.join(savepath, savefilename)
try:
if not os.path.exists(savepath):
os.makedirs(savepath)
# 判断文件是否存在,如果不存在则下载
if not os.path.isfile(savefile):
print('Downloading data from %s' % downloadurl)
urlretrieve(downloadurl, filename=savefile)
print('\nDownload finished!')
else:
print('File already exsits!')
# 获取文件大小
filesize = os.path.getsize(savefile)
# 文件大小默认以Bytes计, 转换为Mb
print('File size = %.2f Mb' % (filesize / 1024 / 1024))
except Exception as e:
print('downloadfile Error:', e)

if __name__ == '__main__':
getJDProdComment('100087971268')

以上代码中的Cookie信息,需要根据自己登录后从chrome浏览器的调试模式中拿到的Cookie信息替换。

2、运行效果

运行效果:

运行效果


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

数据安全之认识数据库漏洞扫描系统

发表于 2024-03-07 | 更新于: 2025-07-21 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 5k | 阅读时长 ≈ 16

随着信息技术的迅猛发展和互联网的普及,数据库作为存储、管理和检索大量数据的关键组件,其安全性对于企业和组织来说至关重要。然而,由于网络环境的复杂性和攻击手段的多样性,数据库面临着越来越多的安全威胁。黑客可能利用已知的漏洞或弱点,对数据库进行非法访问、数据窃取或篡改,从而给企业和组织带来巨大的经济损失和声誉风险。

为了应对这些安全挑战,数据库漏洞扫描系统应运而生。该系统基于漏洞数据库,通过扫描等手段对指定的远程或本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞。它能够帮助企业和组织及时发现并修复数据库中的安全漏洞,提高数据库的安全防护能力,降低潜在的安全风险。

本文让我们一起来认识一下数据库漏洞扫描系统。

一、什么是数据库漏洞扫描系统

数据库漏洞扫描系统是一种专业的数据库安全产品,它基于对数据库访问控制、数据库审计、资源管理、数据库加密以及数据库系统本身安全机制的深入分析,深入研究和发现数据库系统本身存在的BUG以及数据库管理、使用中存在的问题。

该系统的核心功能在于对数据库系统进行自动化安全评估。通过读取数据库的信息与安全策略进行综合分析,能够充分扫描出数据库系统的安全漏洞和威胁,并自动给出详细的漏洞描述、漏洞来源及修复建议。此外,它还提供智能的修复建议和完整的数据库漏洞报告、数据库安全评估报告,帮助用户进行漏洞修复,从而保护数据库的安全。

数据库漏洞扫描系统的主要特性之一是拥有全面的漏洞库,支持CVE、CNNVD等披露的数据库安全漏洞,并按高、中、低、信息四个级别进行不同层级的漏洞威胁排列。这使得系统能够更准确地识别和评估数据库中的安全风险。

数据库漏洞扫描系统是数据库安全评估工具之一,能够找出数据库自身的安全漏洞和使用中的安全隐患。

二、数据库漏洞扫描系统的发展历程

数据库漏洞扫描系统的发展历程是一个伴随着数据库技术、网络安全威胁以及信息技术发展的不断演进过程。
在早期,数据库的安全主要依赖于基本的访问控制和加密技术,但随着网络攻击手段的不断升级和复杂化,传统的安全措施已经无法满足需求。因此,对数据库进行漏洞扫描和风险评估的需求逐渐凸显。

随着技术的发展,数据库漏洞扫描系统开始兴起。这些系统能够自动化地检测数据库中的安全漏洞,提供修复建议,并帮助用户保持数据库的安全健康状态。它们基于漏洞数据库,通过扫描等手段对指定的远程或本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞。

随着时间的推移,数据库漏洞扫描系统不断发展和完善。它们不仅支持更多的数据库类型和版本,还提供了更全面的漏洞检测和修复建议。此外,一些高级的数据库漏洞扫描系统还具备了合规性检查、弱口令检测等功能,能够更好地满足用户的安全需求。

近年来,随着云计算、大数据、人工智能等技术的快速发展,数据库漏洞扫描系统也迎来了新的发展机遇。通过集成这些先进技术,数据库漏洞扫描系统能够更加高效、准确地发现安全漏洞,提供更为智能的修复方案,为用户的数据库安全保驾护航。

数据库漏洞扫描系统的发展历程是一个不断进步和完善的过程,它随着数据库技术和网络安全威胁的发展而不断演进,为用户提供更加全面、高效的安全保障。

三、数据库漏洞扫描系统的主要功能

数据库漏洞扫描系统具备多种功能,这些功能共同协作,以全面评估数据库的安全性并发现潜在的安全风险。主要功能包括:

  1. 漏洞检测与发现:这是数据库漏洞扫描系统的核心功能。它能够扫描并检测数据库系统中的各种漏洞,包括已知和未知的漏洞。这些漏洞可能涉及SQL注入、跨站脚本攻击(XSS)、未授权访问等安全风险。
  2. 安全风险评估:在发现漏洞后,系统能够对这些漏洞进行风险评估,判断其可能对数据库系统造成的潜在影响。这有助于用户优先处理那些风险较高的漏洞。
  3. 修复建议与报告:基于漏洞检测和风险评估的结果,系统能够生成详细的修复建议和报告。这些建议通常包括如何修复漏洞、加强数据库安全配置、更新补丁等,帮助用户及时消除潜在的安全风险。
  4. 多平台与多数据库支持:系统需要支持多种操作系统和数据库管理系统,以确保无论用户使用的是哪种数据库或操作系统,都能进行有效的扫描和评估。
  5. 自定义扫描策略:系统应允许用户定义自定义的扫描策略,以满足特定的安全需求和环境。这可以包括扫描的深度、范围、时间等参数的设置。
  6. 定期扫描与监控:数据库漏洞扫描系统还应具备定期扫描和监控功能,以便及时发现并处理新的安全威胁。这有助于保持数据库系统的持续安全性。

四、数据库漏洞扫描系统的基本原理

数据库漏洞扫描系统的原理基于自动化的安全测试技术,用于检测数据库系统中存在的潜在安全漏洞。以下是该系统的基本原理:

  1. 信息收集:首先,扫描系统会对目标数据库进行信息收集。这包括获取数据库的类型、版本、配置信息,以及运行的操作系统和服务等。这些信息有助于确定扫描的范围和策略,以及为后续的漏洞检测提供基础数据。
  2. 漏洞检测规则:系统内置了大量的漏洞检测规则,这些规则是根据已知的安全漏洞和攻击手法编写的。这些规则可能涉及SQL注入、跨站脚本攻击(XSS)、权限提升等常见的数据库安全威胁。
  3. 扫描与测试:利用上述的漏洞检测规则,扫描系统会对数据库进行深入的扫描和测试。这可能包括发送特定的查询请求到数据库,观察和分析数据库的响应,以及尝试利用潜在的漏洞。
  4. 漏洞验证:当扫描系统发现潜在的漏洞时,它会尝试进一步验证这些漏洞的存在和利用性。这通常涉及更复杂的测试和攻击模拟,以确保检测到的漏洞是真实存在的,并且可以被攻击者利用。
  5. 报告与修复建议:最后,扫描系统会生成详细的漏洞报告,列出所有检测到的漏洞及其严重程度。同时,系统还会提供修复建议,帮助数据库管理员或安全专家及时修复这些漏洞,提高数据库的安全性。

需要注意的是,数据库漏洞扫描系统虽然功能强大,但也存在一定的局限性。它可能无法检测到所有类型的漏洞,特别是那些新出现或特定环境下的漏洞。此外,系统的准确性和可靠性也受到多种因素的影响,如扫描策略的选择、数据库环境的复杂性等。因此,在使用数据库漏洞扫描系统时,需要结合其他安全措施和人工分析,以确保数据库的安全性。

五、为什么企业需要数据库漏洞扫描系统

黑客常利用数据库的各种漏洞来对数据库进行攻击,例如数据库用户密码的脆弱性,非法的远程连接,数据库用户占用CPU会话数过多等。对于不同的数据库,漏洞也不同。如:目前oracle数据库的漏洞就有超过1000项,SQL Server有超过500项。只要一个漏洞被黑客利用,数据库就有被破坏的危险。还有一点也很重要,操作系统安全不能说明数据库是安全的。辟如我们目前使用的数据库大部分都是关系型数据库,而关系型数据库一般都是通过端口的方式来进行访问的,这种访问方式是可以绕开操作系统的验证的。

企业之所以需要数据库漏洞扫描系统,主要基于以下几个方面的原因:

  1. 识别与修复安全漏洞:数据库是企业存储关键信息和数据的核心组件,其安全性至关重要。然而,由于软件研发过程中可能存在的普遍问题,如引用第三方开源代码和运行环境的不确定性,数据库可能面临各种已知和未知的漏洞。数据库漏洞扫描系统能够自动化地扫描数据库,识别出潜在的安全漏洞,并提供修复建议。这有助于企业及时发现并修复安全漏洞,降低资产风险。
  2. 满足法律合规要求:在数字化时代,网络安全等级保护等法规要求企业对其信息系统进行安全漏洞的检测和修补。数据库漏洞扫描系统能够帮助企业满足这些法律合规要求,确保企业信息系统的安全。
  3. 提高安全管理效率:传统的安全管理方式可能耗时且效率低下,而数据库漏洞扫描系统能够自动化执行漏洞扫描,大大提高安全检测的效率和准确性。同时,系统还能提供针对性的安全建议,帮助企业优化其安全策略和措施,从而进一步提高网络安全水平。
  4. 增强品牌声誉和客户信任:通过及时发现并修复数据库的安全漏洞,企业能够防止数据泄露和系统崩溃等安全事件的发生,从而保护客户信息的安全。这有助于增强客户对企业的信任,提高品牌声誉,为企业赢得更多的商业机会。

综上所述,企业在日常运营中应充分考虑引入并使用数据库漏洞扫描系统。

六、数据库漏洞扫描系统的部署方式

数据库漏洞扫描系统的部署方式主要可以分为以下几种:

  1. 网络集成部署:这种方式是将数据库漏洞扫描系统部署在网络中的某个节点,使其能够与网络中的数据库进行通信并执行扫描任务。这种部署方式通常需要对网络架构进行一定的配置,以确保扫描系统能够顺利访问目标数据库。
  2. 分布式部署:对于大型网络或分布式数据库环境,可以采用分布式部署方式。这意味着在多个网络节点或数据库服务器上部署扫描系统的组件,以实现并行扫描和集中管理。这种部署方式可以提高扫描效率,并更好地适应复杂网络环境的需求。
  3. 独立部署:在某些情况下,数据库漏洞扫描系统可以独立部署在单个设备或服务器上。这种方式适用于对特定数据库或特定环境进行单独的扫描任务。独立部署可以确保扫描系统的独立性和安全性,避免与其他系统或网络产生冲突。

需要注意的是,具体的部署方式应根据实际情况和需求进行选择。在选择部署方式时,需要考虑网络架构、数据库类型、扫描需求以及安全性等因素。同时,部署过程中需要确保遵循相关的安全标准和最佳实践,以确保扫描系统的正常运行和数据的安全性。

七、为什么系统漏洞扫描/网络漏洞扫描系统不能代替数据库漏洞扫描系统?

系统漏洞扫描系统是检查操作系统中存在的漏洞,其扫描对象是操作系统,操作系统是大型数据库系统的运行平台,为数据库系统提供一定程度的安全保护。但是当入侵是通过数据库开放的端口进行时,操作系统就无能为力了。

网络漏洞扫描系统是一种基于网络的漏洞扫描和分析工具软件,能够自动检查主机、网络设备的安全漏洞。系统管理员利用漏洞扫描技术对局域网络、Web站点、主机操作系统、系统服务以及防火墙系统的安全漏洞进行扫描,可以能够及时发现网络漏洞并在网络攻击者扫描和利用之前予以修补,从而提高网络的安全。

相比之下,数据库漏洞扫描系统专门针对数据库进行安全检测。数据库系统的安全性很大程度上是依赖于数据库管理系统。如果数据库管理系统的安全机制非常强大,则数据库系统的安全性能就较好。数据库漏洞扫描系统它能够识别数据库中的安全漏洞,包括SQL注入、未授权访问等数据库特有的安全威胁。此外,数据库漏洞扫描系统还能评估数据库的配置和权限设置,发现潜在的安全风险,并提供相应的修复建议。

虽然系统漏洞扫描和网络漏洞扫描系统能够提升整体网络安全水平,但它们无法替代数据库漏洞扫描系统在数据库安全方面的专业性和深入性。为了全面保障网络安全,需要综合运用多种扫描系统,从多个层面进行安全检测和防护。

八、数据库漏洞扫描系统的局限性和挑战

数据库漏洞扫描系统能够发现数据库中的安全漏洞并提供修复建议,但也存在一些局限性和挑战。如:

  1. 无法检测所有漏洞:尽管数据库漏洞扫描系统可以检测大量的已知漏洞,但它可能无法检测到所有类型的漏洞。特别是对于那些新出现的、未知的或者特定环境下的漏洞,系统可能无法进行有效识别。
  2. 误报和漏报的可能性:在某些情况下,系统可能会误报一些并非真正存在的漏洞,或者漏报一些实际存在的安全风险。这可能是由于扫描过程中的一些技术限制或者环境差异导致的。
  3. 依赖于数据库的配合:数据库漏洞扫描系统通常需要数据库的配合才能进行完整的扫描。如果数据库管理员不提供足够的权限或者对扫描过程进行限制,系统可能无法全面评估数据库的安全性。
  4. 需要人工分析和判断:尽管系统可以生成详细的漏洞报告和修复建议,但最终的决策和修复工作仍然需要由数据库管理员或安全专家来执行。因此,对人员的专业技能和经验有一定要求。
  5. 对复杂环境的挑战:在复杂的数据库环境中,如分布式数据库、云数据库等,数据库漏洞扫描系统可能面临更大的挑战。这些环境可能涉及多个组件、网络和安全策略,使得扫描和评估过程更加复杂和困难。

针对以上挑战,数据库漏洞扫描系统的发展趋势主要体现在以下几个方面:

  1. 技术集成与智能化:随着人工智能、大数据等技术的快速发展,数据库漏洞扫描系统将更加注重技术的集成和智能化。例如,通过集成机器学习和深度学习算法,系统能够更精准地识别和分析漏洞,提供更为智能化的修复建议。
  2. 云化与平台化:云计算的普及使得越来越多的应用和服务迁移到云端。因此,数据库漏洞扫描系统也将逐步云化,为用户提供更为便捷、灵活的服务。同时,平台化也是一个重要的发展趋势,通过构建统一的安全管理平台,实现多种安全工具和服务的集成和协同。
  3. 全面性与精细化:随着数据库类型的多样化和复杂性的增加,数据库漏洞扫描系统需要支持更多的数据库类型和版本,并提供更为全面和精细化的漏洞检测。这意味着系统需要不断更新和优化漏洞数据库,提高检测的准确性和效率。
  4. 合规性与标准化:随着网络安全法规的不断完善,数据库漏洞扫描系统需要更加注重合规性和标准化。系统需要能够按照相关法规和标准进行检测和报告,帮助企业满足法律合规要求。
  5. 自动化与响应式安全:自动化是数据库漏洞扫描系统的重要发展方向。通过实现自动化的扫描、分析和修复流程,可以大大提高安全管理的效率。同时,响应式安全也是未来的一个关键趋势,系统需要能够实时监测数据库的安全状况,对新的漏洞和威胁进行快速响应。

综上所述,数据库漏洞扫描系统的发展趋势是多元化、集成化、云化、平台化、全面化、精细化、合规化、自动化和响应式安全。这些趋势将有助于提升数据库漏洞扫描系统的性能和功能,为企业提供更为全面、高效和智能的安全保障。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

mitmproxy实战-通过mitmdump爬取京东金榜排行数据

发表于 2024-03-04 | 更新于: 2025-07-21 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 1.4k | 阅读时长 ≈ 5

mitmproxy

对于APP的数据爬取或需要构建复杂的接口参数数据的爬取可以通过mitmproxy抓包还原流量,解析流量数据包来获取。mitmproxy是一个免费的开源交互式的HTTPS代理工具。它类似于其他抓包工具如WireShark和Fiddler,支持抓取HTTP和HTTPS协议的数据包,并可以通过控制台形式进行操作。mitmproxy具有两个非常有用的组件:mitmdump和mitmweb。mitmdump是mitmproxy的命令行接口,可以直接抓取请求数据。

本文介绍通过通过mitmdump爬取京东金榜数据。

京东金榜只有H5小程序和京东APP才有,用直接http请求来爬取数据很麻烦需要找到相应的接口构建很复杂的参数。通过mitmproxy代理抓包,从流量包中解析需要的数据相对来说要容易得多。

一、准备工作

安装mitmproxy并配置客户端。具体步骤见《mitmproxy安装与配置》
如果需要通过APP爬取,需要安装APP的模拟器,这里推荐用夜神模拟器。
启动模拟器后APP的网络配置一样的要配置通过mitmproxy的代理,因为APP一般都是通过HTTPS访问的,还需要安装证书。

1、模拟器安卓操作系统安装证书

夜神模拟器可以直击访问本地的windows目录和模拟器的安卓目录,我们需要将mitmproxy的安卓证书传输到模拟器的安卓文件夹,点击夜神模拟器的文件助手
夜神模拟器的文件助手

将mitmproxy的安卓证书传到安卓端。
将mitmproxy的安卓证书传到安卓端

安装证书: 安卓模拟器–>设置–>安全–>从SD卡安装
安装证书

选择开始传到安卓文件夹中的证书文件
选择证书文件

输入PIN码
输入PIN码

为证书取个名字如mitmproxy,点击确定就可以了
证书命名

查看证书可以点击“用户凭据”
查看证书

可以看到mitmproxy的CA证书已经安装好了。
确认证书

2、模拟器安卓操作系统配置代理

安装好了CA证书,还要配置模拟器安卓操作系统的网络代理。
点击模拟其中的无线和网络中的WLAN
设置网络

选择默认的无线连接WiredSSID在弹出的菜单中选择“修改网络”
修改网络

设置mitmproxy的服务器主机IP和代理服务器端口,服务器主机IP就是宿主机windows主机的IP,端口就是起mitmproxy服务的端口。
设置代理

mitmproxy和模拟器都准备好以后就可以分析京东金榜的数据了。

二、分析数据

京东金榜H5小程序的地址是 https://h5.m.jd.com/babelDiy/Zeus/32xRoXWmepbBVHfDMoHMw2kGfHdF/index.html
我们可以用浏览器访问这个地址来分析需要爬取数据的接口和相应返回的数据格式。在这里可以到到京东金榜的数据接口是https://api.m.jd.com/client.action,通过POST请求来获取的金榜数据。
分析接口

通过Preview仔细分析数据接口返回的金榜数据的JSON格式
分析数据

接下来我们就要根据接口和JSON格式的数据来写代码获取并解析相应的数据信息。

三、爬取数据

在这里我们通过response接口获取通过mitmproxy代理后的流量进行解析,实现对京东金榜数据的获取。爬取数据的jdrank_scripts.py具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import json

def response(flow):
url = 'https://api.m.jd.com/client.action'
if flow.request.url.startswith(url):
text = flow.response.text
json_data = json.loads(text)
#print(json_data)
#获取金榜排行
if ('result' in json_data) and ('tabs' in json_data['result']):
getMainGoldRank(json_data)
#获取金榜排行商品列表
if ('result' in json_data) and ('mainRank' in json_data['result']):
getJDProductInfo(json_data)
#获取商品信息
if flow.request.url.startswith(url):
text = flow.response.text
json_data = json.loads(text)
if ('floors' in json_data) and len(json_data['floors'])>1:
prod_skuId=json_data['floors'][0].get('data').get('extMap').get('skuId')
prod_introduceInfo=text
print('-------prod_skuId-------:+++',prod_skuId)
print(prod_skuId, prod_introduceInfo)


# 获取金榜列表
def getMainGoldRank(json_data):
tabs = json_data['result']['tabs']
for tab in tabs:
tabName = tab['tabName'] # 榜单名称
tabData = tab['data'] # 榜单数据
print(type(tabData))
if type(tabData) is list:
for rankdata in tabData:
rankId = rankdata['id']
rankTitle = rankdata['name']
rankType = rankdata['rankType']
skuId=None
print(tabName, rankId, rankType, rankTitle, skuId)
if type(tabData) is dict:
relatedAdvIds = tab['relatedAdvIds']
if type(relatedAdvIds) is list:
for relatedAdvId in relatedAdvIds:
rankList = tabData[relatedAdvId]['rankList']
for rankdata in rankList:
rankId = rankdata['rankId']
rankTitle = rankdata['rankType']
rankType = rankdata['rankTitle']
skuId = rankdata['skuId']
print(tabName, rankId, rankType, rankTitle, skuId)

#获取JD金榜商品概要信息
def getJDProductInfo(json_data):
#if ('result' in json_data) and ('mainRank' in json_data['result']):
print(json_data)
try:
products=json_data['result']['mainRank']['products']
prod_main_rank=json_data['result']['mainRank']
prod_rankId=prod_main_rank.get('id')
#判断如果没有在main_gold_rank表中则添加记录至main_gold_rank表
rankTitle=prod_main_rank.get('name')
print('', prod_rankId,rankTitle , 13, '')
for product in products:
prod_skuId = product['product']['skuId']
prod_name = product['product']['name']
prod_img = product['product']['img']
prod_skuSallingPoint = product.get('skuSallingPoint')
prod_saleInfoStr = product.get('saleInfoStr')
prod_simpleSaleInfoStr = product.get('simpleSaleInfoStr')
prod_totalBuyInfoStr = product.get('totalBuyInfoStr')
prod_goodCountStr = product.get('goodCountStr')
prod_simpleGoodCountStr = product.get('simpleGoodCountStr')
prod_totalPopularity = product.get('totalPopularity')
prod_popularityStr = product.get('popularityStr')
prod_cmttTag = product.get('cmttTag')
prod_longTitle = product.get('longTitle')
prod_authorityScore = product.get('authorityScore')
prod_saleScore = product.get('saleScore')
prod_popularityScore = product.get('popularityScore')
prod_growthScore = product.get('growthScore')
prod_praiseScore = product.get('praiseScore')
prod_brandScore = product.get('brandScore')
prod_brandStr = product.get('brandStr')
prod_growthStr = product.get('growthStr')
prod_sortedSaleIfoStr = product.get('sortedSaleIfoStr')
prod_rankNum = product.get('rankNum')
print(prod_rankId,prod_skuId,prod_name,prod_img,prod_skuSallingPoint,prod_saleInfoStr,prod_simpleSaleInfoStr,prod_totalBuyInfoStr,
prod_goodCountStr,prod_simpleGoodCountStr,prod_totalPopularity,prod_popularityStr,prod_cmttTag,prod_longTitle,
prod_authorityScore,prod_saleScore,prod_popularityScore,prod_growthScore,prod_praiseScore,prod_brandScore,prod_brandStr,prod_growthStr,prod_sortedSaleIfoStr,prod_rankNum)
except Exception as e:
print('getJDProductInfo Error:', e)

通过运行 mitmdump -s jdrank_scripts.py
用浏览器访问京东H5的小程序https://h5.m.jd.com/babelDiy/Zeus/32xRoXWmepbBVHfDMoHMw2kGfHdF/index.html
从H5的小程序访问获取京东金榜的排行数据
获取京东金榜排行

获取京东金榜商品信息
获取京东金榜商品信息

从京东APP上访问京东金榜也是同样的效果。

至此,本文从环境准备到数据分析到代码实现,通过mitmdump爬取京东金榜排行数据进行mitmproxy爬取数据的实战。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

mitmproxy安装与配置

发表于 2024-02-29 | 更新于: 2025-07-21 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 1.1k | 阅读时长 ≈ 3

mitmproxy是一个免费的开源交互式的HTTPS代理工具。它类似于其他抓包工具如WireShark和Fiddler,支持抓取HTTP和HTTPS协议的数据包,并可以通过控制台形式进行操作。mitmproxy具有两个非常有用的组件:mitmdump和mitmweb。mitmdump是mitmproxy的命令行接口,可以直接抓取请求数据,而mitmweb是一个web程序,可以清楚地观察mitmproxy抓取的请求数据。

此外,mitmproxy的特点之一是它支持Python自定义脚本,这使得mitmproxy的使用更加灵活和强大。通过安装mitmproxy,用户可以实时查看、记录、修改数据,引发服务端或客户端的特定行为。mitmproxy是一个功能强大的抓包工具,具有广泛的应用场景,如网络调试、安全测试、数据分析等。

本文介绍mitmproxy的安装与配置,通过mitmproxy代理进行抓包。

一、mitmproxy的安装

首先需要安装好python,版本需要不低于3.6,且安装了附带了包管理工具pip
在命令行中输入pip install mitmproxy,等待安装完成。
安装完成后,系统将拥有mitmproxy、mitmdump、mitmweb三个命令,可以通过mitmdump检查一下mitmproxy是否安装成功了。
查看mitmproxy版本

二、运行mitmproxy

要启动 mitmproxy 用 mitmproxy、mitmdump、mitmweb 这三个命令中的任意一个即可,这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。

启动mitmproxy后,客户端要配置指定通过mitmproxy代理来访问目标网站的服务资源。
mitmproxy代理工作原理

1、配置客户端代理

运行mitmproxy默认代理的端口是8080,所以要配置浏览器通过mitmproxy代理来访问目标网站。

方式一,设置全局代理

设置全局代理,在window中找到网络和Internet,点击手动设置代理,将使用代理服务器的开关打开,设置代理IP地址为127.0.0.1,端口为8080
设置全局代理

方式二,设置浏览器代理

通过浏览器插件设置浏览器代理,如chrome浏览器可以通过SwitchyOmega插件设置代理
通过SwitchyOmega插件设置代理

通过mitmproxy命令启动mitmproxy后通过设置代理后的浏览器访问http://xiejava.ishareread.com,可以看到通过mitmproxy代理后的访问流量日志。
http抓包日志情况

2、客户端安装mitmproxy提供的CA证书

对于访问https加密的网站需要证书才能解密,所以客户端需要安装mitmproxy提供的CA证书。
通过mitmporxy代理浏览器访问http://mitm.it/将显示mitmproxy证书下载和安装指导页面
mitmproxy证书下载和安装指导页面

可以看到mitmproxy提供了各种操作系统的CA证书,点击”Show Instructions”,将显示证书的安装指导,可以根据指导一步步安装成功。
证书的安装指导

对于Windows系统:

手工安装步骤:

  1. 双击mitmproxy提供的CA证书文件(通常是mitmproxy-ca.p12)。
  2. 在出现的导入证书引导页中,直接点击“下一步”按钮。
  3. 接下来会出现密码设置提示,这里不需要设置密码,直接点击“下一步”按钮。
  4. 选择证书的存储区域。通常选择“将所有的证书都放入下列存储”,然后点击“浏览”按钮,选择证书存储位置为“受信任的根证书颁发机构”,接着点击“确定”按钮。
  5. 点击“下一步”按钮完成证书的导入。
  6. 如果有安全警告弹出,直接点击“是”按钮即可。

自动安装步骤:

在window中用管理员权限运行PowerShell,在命令行控制台,进去到证书的目录,一般是在c:\Users\yourname.mitmproxy目录下。执行 certutil.exe -addstore root mitmproxy-ca-cert.cer 如下图所示。
自动安装证书步骤

安装好证书后,通过mitmproxy代理,我们来访问https协议的网站https://www.taobao.com。可以在后台看到mitmproxy抓取的https流量日志
mitmproxy抓取的https流量日志

至此,我们成功安装了mitmproxy,并配置了相应的CA证书,通过mitmporxy代理能够获取访问http和https网站的流量数据。后续我们将通过一个实例来进行mitmproxy抓包爬取京东APP的金榜排行的数据信息。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

Selenium实战-模拟登录淘宝并爬取商品信息

发表于 2024-02-26 | 更新于: 2025-07-21 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 2.3k | 阅读时长 ≈ 10

现在很多网站要获取数据都得要先登录。Selenium是一个用于Web应用程序测试的自动化工具。它直接运行在浏览器中,模拟真实用户的操作。本文介绍如何通过Selenium来登录淘宝并自动爬取商品信息。
关于Selenium的安装与配置请参考博文《Selenium安装与配置》

一、通过Selenium模拟登录淘宝

现在要获取淘宝的商品信息需要先登录淘宝。我们先来分析淘宝的登录页面。

1、分析淘宝登录页面

淘宝登录页面为https://login.taobao.com/member/login.jhtml,支持扫描登录和用户名、密码验证登录。我们模拟用户名、密码登录。
通过Chrome浏览器输入淘宝登录页面链接F12打开开发者工具,分析淘宝登录页的源代码,找到登录账号、登录密码和登录按钮的相关控件的源代码
分析淘宝登录页面

在这里可以看到
账号名的输入框控件代码:<input name="fm-login-id" type="text" class="fm-text" id="fm-login-id" tabindex="1" aria-label="账号名/邮箱/手机号" placeholder="账号名/邮箱/手机号" autocapitalize="off" data-spm-anchor-id="a2107.1.0.i1.3e3e11d9pGQKXf">
登录密码的输入框控件代码:<input name="fm-login-password" type="password" class="fm-text" id="fm-login-password" tabindex="2" aria-label="请输入登录密码" placeholder="请输入登录密码" maxlength="40" autocapitalize="off" data-spm-anchor-id="a2107.1.0.i2.3e3e11d9pGQKXf">
登录按钮的控件代码:<button type="submit" tabindex="3" class="fm-button fm-submit password-login" data-spm-anchor-id="a2107.1.0.i3.3e3e11d9pGQKXf">登录</button>
找到登录需要用的的这几个关键控件代码都就可以开始编码来控制这些控件进行模拟操作了。

2、通过Selenium实现模拟登录代码

具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from selenium.webdriver import Chrome
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common import TimeoutException

driver=Chrome()
wait = WebDriverWait(driver, 10)

# 模拟淘宝登录
def login_taobao():
print('开始登录...')
try:
login_url='https://login.taobao.com/member/login.jhtml'
driver.get(login_url)
input_login_id = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-id')))
input_login_password = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-password')))
input_login_id.send_keys('your account') # 用你自己的淘宝账号替换
input_login_password.send_keys('your password') # 用你自己的密码替换
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit.password-login')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
return is_loging
except TimeoutException:
print('login_taobao TimeoutException')
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
if is_loging:
return is_loging
else:
login_taobao()

if __name__ == '__main__':
is_loging=login_taobao()
if is_loging:
print('已经登录')

运行代码后可以看到程序自动的调起了一个Chrome浏览器并访问了淘宝的登录页面,自动的输入了用户淘宝账号和密码,自动的点击了登录按钮,但出现了一个滑动验证的控件,要求滑动验证。
淘宝登录需要滑动验证

人工拖动滑动验证控件,显示验证失败。
淘宝滑动验证失败

这是因为淘宝有一套反爬机制识别是否是机器自动在登录。如果是人工打开浏览器,手工输入账号密码登录就不会弹出滑动验证控件进行验证。在网上有很多办法,如可以通过代理修改chormdriver的识别码,这里介绍通过Selenium如何接管已经运行的Chrome浏览器来实现规避淘宝的验证。

3、Selenium接管已经运行的Chrome浏览器

1)启动Chrome的远程调试模式

通过
chrome.exe --remote-debugging-port=9222 --user-data-dir='某个存在的文件夹地址' 启动Chrome的远程调试模式,启动一个Chrome浏览器。
找到chrome的安装目录,找到chrome.exe ,通过cmd命令行执行上面的命令。
启动Chrome远程调试模式

运行上面命令后,就会弹出一个chrome浏览器,这个浏览器是可以被Selenium来接管操作的。

2)代码中实现接管已经运行的Chrome浏览器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common import TimeoutException

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "localhost:9222") #此处端口保持和命令行启动的端口一致
driver = Chrome(options=chrome_options)
wait = WebDriverWait(driver, 10)


# 模拟淘宝登录
def login_taobao():
print('开始登录...')
try:
login_url='https://login.taobao.com/member/login.jhtml'
driver.get(login_url)
input_login_id = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-id')))
input_login_password = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-password')))
input_login_id.send_keys('your account') # 用你自己的淘宝账号替换
input_login_password.send_keys('your password') # 用你自己的密码替换
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit.password-login')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
return is_loging
except TimeoutException:
print('login_taobao TimeoutException')
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
if is_loging:
return is_loging
else:
login_taobao()

if __name__ == '__main__':
is_loging=login_taobao()
if is_loging:
print('已经登录')

4、运行效果

运行上述代码就可以看到,Selenium接管了这个通过Chrome的远程调试模式启动的浏览器,并自动输入用户名和密码,自动登录成功,跳转到我的淘宝界面。
自动登录到我的淘宝

二、通过Selenium自动爬取淘宝商品信息

1、分析商品页面

https://s.taobao.com/search?page=1&q=ipad&tab=all
通过Chrome浏览器输入淘宝搜索商品页面链接F12打开开发者工具,分析淘宝搜索商品列表页的源代码,找到商品展示相关源代码包括商品的title、价格、详情页、购买情况等。我们需要通过解析这些源代码获取相应的商品信息。
分析商品页面

找到下一页翻页的按钮,我们需要控制下一页翻页的按钮来实现自动翻页。
分析淘宝下一页

2、实现商品获取代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 解析获取商品信息
def get_products():
"""提取商品数据"""
html = driver.page_source
doc = pq(html)
items = doc('.Card--doubleCardWrapper--L2XFE73').items()
for item in items:
product = {'url': item.attr('href'),
'price': item.find('.Price--priceInt--ZlsSi_M').text(),
'realsales': item.find('.Price--realSales--FhTZc7U-cnt').text(),
'title': item.find('.Title--title--jCOPvpf').text(),
'shop': item.find('.ShopInfo--TextAndPic--yH0AZfx').text(),
'location': item.find('.Price--procity--_7Vt3mX').text()}
print(product)

# 自动获取商品信息并自动翻页
def index_page(url,cur_page,max_page):
print(' 正在爬取:'+url)
try:
driver.get(url)
get_products()
next_page_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//button/span[contains(text(),"下一页")]')))
next_page_btn.click()
do_change = wait.until(EC.url_changes(url))
if do_change and cur_page<max_page:
new_url=driver.current_url
cur_page = cur_page + 1
index_page(new_url,cur_page,max_page)
except TimeoutException:
print('---index_page TimeoutException---')

3、实现效果

从浏览器看,Selenium自动访问淘宝登录页,当切到用户名密码登录界面时,Selenium自动输入用户名、密码点击登录。登录成功后,自动访问商品搜索页搜索ipad,进行商信息获取,自动翻下一页。
从后台打印的日志看,显示“开始登录”、“已经登录”,正在爬取的链接和该链接下的商品信息。
Selenium后台日志

至此,通过Selenium来代码实现模拟登录淘宝并自动爬取商品信息,进行了Selenium的实战。
要注意的是:

1、在Selenium打开登录页面后淘宝默认的是扫码登录,需要人为接入切换用户密码模式。这时也可以让Selenium自动去切到用户密码模式登录。代码如下:
change_type=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ‘.iconfont.icon-password’)))
change_type.click() #切换到用户密码模式登录
2、在运行启动Chrome的远程调试模式,启动Chrome浏览器后,要关闭其他的Chrome浏览器,保留远程调试模式启动的浏览器就好了。如果是存在多个Chrome浏览器Selenium会不知道要接管哪一个。

附上全部完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common import TimeoutException
from urllib.parse import quote
from pyquery import PyQuery as pq

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "localhost:9222") #此处端口保持和命令行启动的端口一致
driver = Chrome(options=chrome_options)
wait = WebDriverWait(driver, 10)

# 模拟淘宝登录
def login_taobao():
print('开始登录...')
try:
login_url='https://login.taobao.com/member/login.jhtml'
driver.get(login_url)
change_type=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.iconfont.icon-password')))
change_type.click() #切换到用户密码模式登录
input_login_id = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-id')))
input_login_password = wait.until(EC.presence_of_element_located((By.ID, 'fm-login-password')))
input_login_id.send_keys('your account') # 用你自己的淘宝账号替换
input_login_password.send_keys('your password') # 用你自己的密码替换
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit.password-login')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
return is_loging
except TimeoutException:
print('login_taobao TimeoutException')
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.fm-button.fm-submit')))
submit.click()
is_loging = wait.until(EC.url_changes(login_url))
if is_loging:
return is_loging
else:
login_taobao()


# 解析获取商品信息
def get_products():
"""提取商品数据"""
html = driver.page_source
doc = pq(html)
items = doc('.Card--doubleCardWrapper--L2XFE73').items()
for item in items:
product = {'url': item.attr('href'),
'price': item.find('.Price--priceInt--ZlsSi_M').text(),
'realsales': item.find('.Price--realSales--FhTZc7U-cnt').text(),
'title': item.find('.Title--title--jCOPvpf').text(),
'shop': item.find('.ShopInfo--TextAndPic--yH0AZfx').text(),
'location': item.find('.Price--procity--_7Vt3mX').text()}
print(product)

# 自动获取商品信息并自动翻页
def index_page(url,cur_page,max_page):
print(' 正在爬取:'+url)
try:
driver.get(url)
get_products()
next_page_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//button/span[contains(text(),"下一页")]')))
next_page_btn.click()
do_change = wait.until(EC.url_changes(url))
if do_change and cur_page<max_page:
new_url=driver.current_url
cur_page = cur_page + 1
index_page(new_url,cur_page,max_page)
except TimeoutException:
print('---index_page TimeoutException---')




if __name__ == '__main__':
is_loging=login_taobao()
if is_loging:
print('已经登录')
KEYWORD = 'iPad'
url = 'https://s.taobao.com/search?page=1&q=' + quote(KEYWORD) + '&tab=all'
max_page=10
index_page(url,1,max_page)

作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

Selenium安装与配置

发表于 2024-02-23 | 更新于: 2025-07-21 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 1k | 阅读时长 ≈ 3

Selenium是一个用于Web应用程序测试的自动化工具。它直接运行在浏览器中,模拟真实用户的操作。Selenium支持多种主流浏览器,如IE、Mozilla Firefox、Safari、Google Chrome、Opera和Edge等。在爬取数据的时候对于需要登录后才能爬取的情况往往可以利用Selenium来进行模拟登录,登录后进行数据的获取。这里先介绍Selenium的安装与配置,实现通过python来驱动浏览器进行操作。

一、selenium安装

要安装Selenium,首先需要具备Python开发环境。以下是安装Selenium的步骤:

1. Python环境准备:

  • 打开Python官网:https://www.python.org/downloads/,下载适合你操作系统的Python版本。

  • 安装Python。在window下安装python环境非常简单,直接下一步下一步就可以安装完成。安装过程中,确保将Python添加到环境变量中,以便在命令行中运行Python命令。

    在这里插入图片描述

  • 安装完成后,可以在命令行中输入python --version来验证Python是否安装成功,并查看版本号。

在这里插入图片描述

2. 安装Selenium:

  • 在命令行中,使用pip(Python的包管理工具)来安装Selenium。输入以下命令并按回车键执行:
  • 如果你的系统有多个Python版本,可能需要使用pip3代替pip。
1
pip install selenium

3. 浏览器驱动安装:

  • Selenium支持多种浏览器,但每种浏览器都需要相应的驱动程序。例如,对于Chrome浏览器,你需要下载ChromeDriver。
    ○ 访问ChromeDriver的下载页面:https://sites.google.com/a/chromium.org/chromedriver/,选择与你的Chrome浏览器版本相对应的ChromeDriver版本。
    ○ 国内镜像下载站点 https://registry.npmmirror.com/binary.html?path=chromedriver/
    高版本的ChromeDriver可以在https://chromedriver.com/download 下载
  • 下载后,解压(如果需要的话),并将ChromeDriver的路径添加到系统环境变量中,或者将其放在你的项目目录中。比如我的是放到 C:\python\Scripts 并将C:\python\Scripts配置到了系统环境变量中。
    在这里插入图片描述

4. 验证安装:

参考selenium的官方文档,创建一个简单的Python脚本,使用Selenium打开浏览器并访问一个网页。
运行这个脚本。如果一切顺利,它会打开Chrome浏览器并导航到指定的URL,然后关闭浏览器。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get("https://www.selenium.dev/selenium/web/web-form.html")

title = driver.title

driver.implicitly_wait(0.5)

text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")

text_box.send_keys("Selenium")
submit_button.click()

message = driver.find_element(by=By.ID, value="message")
text = message.text

driver.quit()

效果如下:
打开一个浏览器,访问https://www.selenium.dev/selenium/web/web-form.html
在这里插入图片描述

对浏览器中的元素进行操作,最后关闭浏览器。
在这里插入图片描述

请注意,由于Selenium和浏览器驱动程序可能会定期更新,因此在安装和配置过程中,最好参考最新的官方文档和指南。

二、常见问题

在安装Selenium的过程中,可能会遇到一些常见的问题

1. Selenium版本与浏览器驱动程序不兼容:

  • 问题:安装的Selenium版本与浏览器驱动程序版本不兼容。
  • 解决方案:检查Selenium和浏览器驱动程序的版本,确保它们相互兼容。通常,Selenium的最新版本会支持最新的浏览器驱动程序。如果需要,可以降级或升级Selenium或浏览器驱动程序以确保兼容性。

    2. 浏览器驱动程序路径未正确设置:

  • 问题:浏览器驱动程序的路径未正确设置,导致Selenium无法找到驱动程序。
  • 解决方案:确保将浏览器驱动程序的路径添加到系统环境变量中,或者在Selenium代码中明确指定驱动程序的路径。例如,对于ChromeDriver,可以在代码中这样设置:
1
2
from selenium import webdriver  
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

后续我们将实战通过selenium来实现登录到淘宝并获取淘宝的商品信息。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

数据安全之认识数据库审计系统

发表于 2024-02-22 | 更新于: 2025-07-21 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 3.6k | 阅读时长 ≈ 12

随着企业业务数据量的不断增长和数据存储的集中化,数据库成为企业的核心资产之一。然而,数据库面临着各种安全威胁,如SQL注入、权限滥用、数据泄露等。为了保障数据库的安全性和完整性,企业需要采取有效的审计措施来监控和记录数据库的操作行为。本文让我们一起来认识数据库审计系统。

一、什么是数据库审计系统

数据库审计系统是通过对所有访问数据库操作行为的审计,详细记录用户对数据库进行增删改查、查询、登录等操作行为及返回结果,通过配置安全规则实现对危险操作的实时告警和事后追溯,从而达到保护数据库安全的防护效果的审计产品。通常黑客的SQL注入攻击行为,也可以通过数据库审计发现。

数据库审计系统具备实时监测并智能地分析、还原各种数据库操作过程的功能。它还能根据设置的规则,智能地判断出违规操作数据库的行为,并对违规行为进行记录、报警,甚至阻断攻击行为。

数据库审计系统的主要价值在于:

  1. 在发生数据库安全事件(例如数据篡改、泄露)后,为事件的追责定责提供依据。
  2. 针对数据库操作的风险行为进行时时告警,帮助管理人员对用户的行为一目了然,真正做到数据库操作行为可监控,违规操作可追溯。

此外,数据库审计系统还可以帮助用户事后生成合规报告,提高数据资产安全。它是数据库安全技术之一,与数据库漏扫、数据库加密、数据库防火墙、数据脱敏等技术共同构成了数据库安全体系。

二、为什么需要数据库审计系统

数据库审计系统产生的背景主要基于以下几个方面的需求和发展趋势:

  1. 数据安全风险增加:随着企业业务数据量的不断增长和数据存储的集中化,数据库成为企业的核心资产之一。然而,数据库面临着各种安全威胁,如SQL注入、权限滥用、数据泄露等。为了保障数据库的安全性和完整性,企业需要采取有效的审计措施来监控和记录数据库的操作行为。
  2. 法规政策要求:随着数据保护法规的日益严格,如GDPR(通用数据保护条例)等,企业需要确保数据库操作符合法规要求,并能够提供合规的审计日志。数据库审计系统能够帮助企业满足这些法规要求,提供合规的审计证据。
  3. 业务需求推动:企业为了保障业务连续性和数据安全,需要对数据库操作进行严格的控制和审计。例如,企业需要监控敏感数据的访问和操作,确保只有授权的用户能够执行特定的操作。数据库审计系统能够提供细粒度的审计和监控功能,满足企业的业务需求。
  4. 技术发展推动:随着数据库技术的不断发展和创新,如云计算、大数据等技术的广泛应用,数据库审计系统也需要不断升级和完善,以适应新的技术环境和安全挑战。
    基于数据安全风险增加、法规政策要求、业务需求推动和技术发展推动等因素。企业需要采用有效的数据库审计系统来监控和记录数据库操作行为,保障数据的安全性和合规性,同时满足业务需求和技术发展要求。

三、数据库审计系统的主要功能

数据库审计的主要功能在于对数据库的访问行为进行监管,通过镜像或探针的方式采集所有数据库的访问流量,记录下数据库的所有访问和操作行为,在发生数据库安全事件(例如数据篡改或泄露)后为事件的追责提供依据,并针对数据库操作的风险行为进行告警。
1、实时监控与访问审计
数据库审计系统可实时监控防护数据库系统,防止运维人员、黑客、内部人员的危险操作。当用户访问数据库时,数据库审计系统能够根据内置或者自定义的风险告警规则,进行行为特征及审计规则匹配,任何对数据库的攻击或触发审计规则的操作都会被审计系统记录并实时告警。
2、审计记录检索
数据库审计系统通过各种条件组合的方式进行查询,能够快速精确地定位到某条审计记录。这些组合条件包括操作语句、MAC地址、客户端IP、数据库信息、时间、返回结果等内容。
3、丰富的安全审计报表
数据库审计系统具备功能强大的报表功能,根据审计检索的条件可以导出合规报表和自定义安全报表。
4、安全事件回放
允许安全管理员提取历史数据,对过去某一时段的事件进行回放,真实展现当时的完整数据库操作过程,便于分析和追溯系统安全问题。
5、风险触发实时告警
一旦出现违反数据库安全审计规则的操作,数据库审计系统通常可以配置多种告警方式,包括通过手机短信、邮件、SYSLOG、SNMP等发送到对应运维或者管理人员手中。

四、数据库审计系统的原理

数据库审计系统的原理主要是基于数据库协议标准分析和SQL解析技术,通过旁路部署的方式,镜像或探针采集所有数据库的访问流量,然后对这些流量进行深度解析和审计。
具体来说,数据库审计系统通过获取访问数据库的报文,对报文进行深度解析,提取出针对数据库的操作信息,如访问数据库的IP、账号、时间、操作类型、操作对象以及返回结果等。然后,系统根据预设的审计策略,对这些操作信息进行风险识别,判断是否存在违规操作或安全威胁。如果存在违规行为,系统会实时发出告警,并记录相关审计日志,以便后续分析和追溯。
此外,数据库审计系统还可以根据需要对审计记录进行检索和分析,提供丰富的查询条件和统计分析功能,帮助管理员快速定位问题和追根溯源。同时,系统还可以生成合规报告,帮助用户满足相关的法规要求。
综上所述,数据库审计系统的原理主要是通过采集、解析和审计数据库访问流量,识别违规操作和安全威胁,提供实时告警和审计记录查询功能,确保数据库的安全性和合规性。

五、数据库审计系统的部署方式

1、常规部署(硬件形式旁路部署)
数据库审计系统采用旁路部署时,硬件设备与交换机直连,通过交换机把数据库的访问流量镜像到某个端口,流量直接发送到数据库审计系统的网卡驱动,审计系统需要对流量进行捕获并解析处理。
2、软件部署(软件形式虚拟化部署)
通过插件引流的模式在目标数据库安装agent,解决云环境、虚拟化环境内部流量无法镜像的问题,这种场景下数据库审计系统依旧可以获取网卡的流量,保证正常审计。
3、分布式部署
分布式部署分为中心节点和子节点,审计中心统一负责数据库审计日志数据的存储和分析,审计子节点作为探针负责数据库操作日志的采集、解析和审计,一个审计中心可管理多个审计子节点。另一种模式是单独一个审计管理平台,其他子节点都是正常的审计设备,一个平台实现运维管理和运行监控,适用大型企业单位的分布式部署场景。

六、数据库审计系统如何确保数据安全性

  1. 实时监控与审计:数据库审计系统能够实时监控数据库的所有操作行为,包括访问、修改、删除等。这种实时监控可以确保对数据库的所有活动都有详细的记录,从而能够及时发现并应对任何潜在的安全威胁。
  2. 违规操作检测与告警:系统能够智能地分析并识别出违规操作,如非法越权访问、数据篡改等,并实时发出告警。这有助于管理员及时采取应对措施,防止数据泄露或损坏。
  3. 审计策略管理:系统支持灵活的审计策略设定,可以根据需要对登录用户、数据库表名、字段名及关键字等内容进行多种条件组合的规则设定。这种策略管理可以帮助管理员精确地控制哪些操作需要被审计,从而提高审计效率。
  4. 审计记录检索与分析:系统提供丰富的审计查询条件和细致的统计分析条件,支持以地址、性能消耗、语句数量等多种条件在海量数据中快速检索审计记录。这有助于管理员快速定位问题,找出潜在的安全风险。
  5. 合规报告与事故追根溯源:通过对用户访问数据库行为的记录、分析和汇报,系统可以帮助用户生成合规报告,以及在发生数据安全事故时进行追根溯源,明确责任。这有助于组织满足合规性要求,同时也有助于防止类似事件再次发生。
  6. 风险预警与日志管理:系统提供24小时实时监控,支持syslog、snmp、邮件、网管联动、短信猫、录像等多种方式对危险行为实时告警。此外,系统还具备强大的日志查询与报表管理功能,保证查询结果的可视化展示。这些功能可以帮助管理员及时发现并应对潜在的安全风险。

数据库审计系统通过实时监控、违规操作检测、审计策略管理、审计记录检索、合规报告与事故追根溯源以及风险预警与日志管理等方式,确保数据库的安全性。这些功能共同构成了一个全面的数据库安全防护体系,帮助组织有效地保护其数据免受未经授权的访问和数据泄露的威胁。

七、数据库审计和日志审计系统的区别和联系

数据库审计和日志审计系统都是企业IT安全领域中的重要组成部分,但它们之间存在一些区别和联系。

  • 区别:
  1. 审计对象不同:数据库审计系统主要关注数据库层面的安全审计,监控和记录对数据库的操作行为,包括数据的访问、修改、删除等。而日志审计系统则更广泛地关注企业IT系统中的各种设备、应用和系统产生的日志,包括安全设备、网络设备、服务器、应用系统等。
  2. 审计重点不同:数据库审计系统侧重于对数据库操作行为的合规性、风险性进行审计,帮助用户事后生成合规报告、事故追根溯源。而日志审计系统则更注重对整个IT系统的活动进行审计,包括系统的运行状态、安全事件、用户行为等。
  3. 审计范围不同:数据库审计系统主要关注数据库系统的安全,包括数据库对象的创建、修改和删除,用户的登录和退出,数据库的访问等。而日志审计系统则通常关注整个系统的活动,包括操作系统、应用程序等的活动,以及网络流量等。
  • 联系:
  1. 相辅相成:数据库审计系统和日志审计系统在企业IT安全中都扮演着重要的角色,它们相辅相成,共同构成了企业IT安全审计的完整体系。数据库审计系统可以为日志审计系统提供更为细粒度的审计数据,而日志审计系统则可以为数据库审计系统提供更为全面的系统活动信息。
  2. 相互支持:在实际应用中,数据库审计系统和日志审计系统可以相互支持和配合,共同提高企业的IT安全水平。例如,当数据库审计系统检测到异常操作时,可以触发日志审计系统对相关日志进行深入分析,以便及时发现和应对安全事件。

数据库审计和日志审计系统在审计对象、审计重点和审计范围等方面存在明显的区别,但它们在企业IT安全中又相互支持、相辅相成,共同构成了企业IT安全审计的完整体系。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

数据安全之认识数据资产管理平台

发表于 2024-02-18 | 更新于: 2025-07-21 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 4.4k | 阅读时长 ≈ 14

随着企业数字化转型的深入,数据已经成为企业的重要资产。企业需要更加有效地管理和利用数据,以支持业务决策、优化运营和提高竞争力。本文让我们一起来认识数据资产及数据资产管理平台。

一、什么是数据资产

数据资产是指由个人或企业拥有或控制的,能够为企业带来未来经济利益的,以物理或电子的方式记录的数据资源。这些数据资源需要满足以下条件才能被称为数据资产:

  1. 有价值性:数据资产必须具有价值,能够为企业带来经济利益。这种价值可以表现为直接的经济效益,如提高销售额、降低成本等,也可以表现为间接的经济效益,如提升客户满意度、优化业务流程等。
  2. 可计量性:数据资产的价值必须能够进行量化和计量。这意味着数据资产需要具有可衡量和可评估的属性,可以通过数据分析和挖掘来评估其潜在价值和贡献。
  3. 可读取性:数据资产必须以物理或电子的方式记录,能够被读取、存储和处理。这意味着数据资产需要具有标准化的格式和规范,能够被各种系统和工具所识别和利用。
  4. 权属明确:数据资产必须具有明确的权属关系,即数据的所有权、使用权等需要清晰明确,能够被合法地拥有和控制。这有助于保护企业的数据权益,防止数据泄露和滥用。

数据资产与普通数据的主要区别在于它们的性质和价值。数据资产被视为一种有价值的资源,需要得到妥善的管理和保护,以实现其潜在的经济价值。只有满足以上条件的数据资源才能被称为数据资产。数据资产是企业重要的无形资产之一,对于企业的决策制定、业务优化和经济发展具有重要意义。因此,企业需要加强数据资产的管理和保护,提高数据的质量和价值,从而实现数据驱动的业务发展。

二、什么是数据资产管理平台

1、什么是数据资产管理平台

数据资产管理平台是一个用于集中管理、保护和利用组织数据资产的工具。它提供了一个统一的方式来存储、访问、分析和共享数据,旨在帮助组织更好地管理和利用其数据资产。该平台通常包括数据资产盘点、元数据管理、智能数据分析、数据标准管理、数据集成管理、数据质量管理等功能模块,可以实现对数据资产的全面管理和控制。
数据资产管理平台的核心能力包括简洁可视化的目录构建流程、数据资产标签、数据资产服务等,可以帮助组织实现数据资产的规范管理和高效利用。同时,该平台还具备数据安全保障能力,可以确保数据的安全性和完整性,防止数据泄露和非法访问。

2、为什么需要数据资产管理平台

● 数字化转型趋势:随着企业数字化转型的深入,数据已经成为企业的重要资产。企业需要更加有效地管理和利用数据,以支持业务决策、优化运营和提高竞争力。数据资产管理平台应运而生,为企业提供数据整合、分析、挖掘和利用的能力。
● 数据复杂性增加:随着企业数据规模的不断扩大和来源的多样化,数据的复杂性也在增加。企业需要解决数据整合、数据质量、数据安全等问题,以确保数据的准确性和可靠性。数据资产管理平台通过提供数据集成、数据清洗、数据治理等功能,帮助企业解决这些问题。
● 数据价值挖掘需求:数据资产中蕴含着巨大的价值,但如何发现并利用这些价值成为企业的挑战。数据资产管理平台通过数据分析和挖掘技术,帮助企业发现数据中的模式、趋势和洞察,从而挖掘数据的潜在价值。
● 法规政策要求:随着数据保护法规的日益严格,企业需要确保数据的安全性和合规性。数据资产管理平台通过提供数据加密、访问控制、审计日志等功能,帮助企业满足法规政策的要求,保护数据的安全和隐私。

数据资产管理平台对于现代企业来说具有重要的意义。随着大数据时代的到来,数据已经成为企业的重要资产,而如何有效地管理和利用这些数据资产已经成为企业面临的重要挑战。数据资产管理平台可以帮助企业实现数据资产的规范化、标准化和高效化管理,提高数据的质量和价值,从而为企业的发展提供有力的支持。

三、数据资产管理平台的主要功能

数据资产管理平台的主要功能包括:

  1. 数据资产盘点:从组织架构、业务、信息系统等不同维度统计数据资产,实现组织级数据资产的电子化管理和动态维护功能,形成数据资产管理账册,是实施数据资产管理的重要步骤。
  2. 元数据管理:主要包括数据源管理、数据对象管理、数据资产构造细节、数据标准版本管理等功能。通过元数据标准化、自动审核、血缘关系分析、影响分析等功能,使元数据管理更加自动化、系统化、规范化。
  3. 智能数据分析:基于统计学、模式识别、机器学习、数据抽象等数据分析工具从数据中发现知识的分析方法,直接或间接提高工作效率,帮助用户在正确的时间拥有正确的数据信息,快速做出正确的决策。
  4. 数据标准管理:数据标准分为基本标准和指标标准。通过数据标准,可以检查落地情况和数据质量问题。
  5. 数据集成管理:基于WEB页面的批量集成、可视化流程设计、任务集群管理的数据集成功能,提供全量、增量、CDC、数据库表复制等不同的数据集成能力。
  6. 数据质量管理:数据安全管理规范文件的集中管理、存储和访问,自动发现和分类敏感数据和权限,发现合规风险,监控敏感数据,监控不当数据询问,了解谁在访问数据,观察异常情况并防止数据丢失。
  7. 数据安全和权限管理:确保数据的安全性和隐私保护,包括数据加密、访问控制、权限管理等。
  8. 数据共享和协作:支持数据的共享和协作,促进不同部门和团队之间的数据共享和交流。
    数据资产管理平台的主要功能涵盖了数据资产盘点、元数据管理、智能数据分析、数据标准管理、数据集成管理、数据质量管理、数据安全和权限管理以及数据共享和协作等方面,旨在帮助企业全面管理和利用自身的数据资产,提高数据的质量和价值,为企业的发展提供有力的支持。

四、数据资产管理平台的工作原理

数据资产管理平台通过资产发现系统对多类型数据的资产数据做识别、分析并采集到资源库。支持数据表技术字段、业务类型、字段业务类型识别,以标准数据格式存储,通过后端服务实现对目录和资源的数据管理。

技术架构示意图如下:

数据资产管理平台技术架构

  1. 数据收集与整合:平台首先通过各种方式(如数据库接口、文件导入、API等)从企业的各个数据源中收集数据,并对这些数据进行整合和清洗,以确保数据的准确性和一致性。
  2. 元数据提取与管理:平台会自动提取数据的元数据(即描述数据的数据),并对这些元数据进行管理。元数据可以帮助企业理解数据的来源、含义、关系以及使用方式。
  3. 数据资产目录构建:基于元数据,平台会构建一个数据资产目录。这个目录可以清晰地展示企业的所有数据资产,包括它们的类型、位置、状态以及与其他数据资产的关系。
  4. 数据质量监控与提升:平台会对数据的质量进行持续的监控,并提供工具和方法来提升数据质量。例如,平台可以检测数据的完整性、准确性、一致性等,并提供数据清洗和转换的工具。
  5. 数据安全保护:平台会实施严格的数据安全保护措施,包括数据加密、访问控制、审计日志等,以确保数据的安全性和隐私性。
  6. 数据展示与服务提供:平台会提供一系列的数据服务,如数据查询、数据分析、数据挖掘等,以帮助用户更好地利用数据。同时,平台也会支持数据的共享和交换,以促进企业内部以及企业与外部的数据合作。

数据资产管理平台通过自动化的方式,对企业的数据资产进行全面的管理、保护和利用,从而帮助企业提高数据的质量和价值,实现数据驱动的业务发展。

五、数据资产管理平台的应用场景

数据资产管理平台的应用场景非常广泛,主要涵盖以下几个领域:

  1. 企业数据管理:数据资产管理平台可以帮助企业管理和整合各类数据,包括客户数据、产品数据、供应链数据、财务数据等。通过实现数据的一致性和准确性,平台支持企业的决策和业务运营。
  2. 数据分析与洞察:通过数据资产管理平台,企业可以进行数据分析和挖掘,发现数据中的模式、趋势和洞察。这些洞察有助于企业了解市场需求、优化产品设计、改进营销策略等。
  3. 智能决策支持:平台可以提供实时和准确的数据,支持企业进行智能决策。通过数据的可视化和报表生成,企业可以快速获取关键指标和业务洞察,以支持决策制定和执行。
  4. 客户关系管理:数据资产管理平台可以集成和管理客户数据,帮助企业建立完整的客户画像,实现个性化营销、客户维护和客户服务的优化。
  5. 供应链管理:平台可以监控和管理供应链中的各个环节,包括供应商管理、库存管理、物流管理等,从而提高供应链的效率和可靠性。
  6. 金融风控:在金融行业,数据资产管理平台可以集成和分析大量的金融数据,帮助金融机构进行风险评估和风控管理,提高风险管理的准确性和效率。

此外,随着技术的发展和应用场景的不断扩展,数据资产管理平台还可能应用于更多的领域,如物联网、人工智能、大数据等,以满足企业不断增长的数据管理和利用需求。

六、安全资产管理平台与数据资产管理平台的区别与关系

安全资产管理平台和数据资产管理平台在功能和目标上存在一定的区别,但它们之间也存在紧密的联系。

1、安全资产管理平台与数据资产管理平台的区别

  1. 关注点不同:安全资产管理平台主要关注资产的安全性和风险管理,包括资产识别、风险评估、安全策略制定等。而数据资产管理平台则更侧重于数据的收集、整合、分析和利用,关注数据的完整性、准确性、一致性和可访问性等方面。
  2. 管理对象不同:安全资产管理平台主要管理的是企业的IT资产,包括硬件、软件、网络设备等。而数据资产管理平台则主要管理企业的数据资产,包括结构化数据、非结构化数据、流数据等。
  3. 技术手段不同:安全资产管理平台通常采用安全审计、漏洞扫描、入侵检测等技术手段来确保资产的安全。而数据资产管理平台则利用数据集成、数据清洗、数据挖掘等技术手段来管理和利用数据资产。

    2、安全资产管理平台与数据资产管理平台的关系

  4. 相辅相成:安全资产管理平台和数据资产管理平台在企业的信息化建设中相辅相成。安全资产管理平台为数据资产管理平台提供了安全保障,确保数据资产在收集、传输、存储、使用等过程中的安全性。而数据资产管理平台则通过有效的数据管理和利用,为企业的业务决策和运营提供有力支持,同时也为安全资产管理平台提供了更多的数据源和分析依据。
  5. 相互促进:随着企业信息化程度的不断提高,数据资产的安全性和价值性日益凸显。安全资产管理平台和数据资产管理平台可以通过相互集成和协作,共同提升企业的信息化水平和核心竞争力。例如,通过数据资产管理平台发现的数据异常或风险,可以触发安全资产管理平台进行相应的安全审计和风险评估,从而及时发现和解决潜在的安全隐患。

安全资产管理平台和数据资产管理平台虽然在功能和目标上存在一定的区别,但它们之间紧密相连、相互促进,共同构成了企业信息化建设的重要组成部分。

七、企业如何利用数据资产管理平台管理数据

数据资产管理平台可以通过以下几个方面帮助企业管理数据:

  1. 数据资产盘点:数据资产管理平台可以对企业的数据资产进行全面的盘点,包括数据的来源、存储、使用情况等,从而帮助企业了解自身的数据资产状况,为数据管理和利用提供基础数据。
  2. 元数据管理:元数据是描述数据的数据,通过对元数据的管理,可以帮助企业更好地理解和利用数据。数据资产管理平台可以提供元数据的采集、存储、查询和利用等功能,从而实现元数据的规范化管理。
  3. 智能数据分析:数据资产管理平台可以利用人工智能技术对数据进行分析和挖掘,从而帮助企业发现数据中的规律和趋势,提高数据的利用价值。
  4. 数据标准管理:数据资产管理平台可以制定和管理企业的数据标准,包括数据格式、数据命名、数据分类等,从而确保数据的规范性和一致性,提高数据的质量和可利用性。
  5. 数据集成管理:数据资产管理平台可以实现对企业内部和外部的数据进行集成和整合,从而消除数据孤岛,实现数据的共享和利用。
  6. 数据质量管理:数据资产管理平台可以对数据进行质量检查和管理,包括数据的完整性、准确性、一致性等,从而确保数据的质量和可靠性。
  7. 数据安全保障:数据资产管理平台可以提供数据安全保障能力,包括数据的加密、备份、恢复等,从而确保数据的安全性和完整性,防止数据泄露和非法访问。

数据资产管理平台可以通过全面的数据管理和利用能力,帮助企业更好地管理和利用自身的数据资产,提高数据的质量和价值,为企业的发展提供有力的支持。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

<1…456…21>
XieJava

XieJava

204 日志
12 分类
26 标签
RSS
GitHub
友情链接
  • 爱分享读书
  • CSDN
  • 豆瓣
© 2025 XieJava | Site words total count: 420.8k

主题 — NexT.Muse
0%