Python爬虫:js的btoa和atob和pythonBase64编码解码比对分析

简介: Python爬虫:js的btoa和atob和pythonBase64编码解码比对分析

比对js和py的Base64编码解码,探求一个共通之处


javascript代码

对英文字符进行base64编码解码

var str = 'javascript';
// 编码
btoa(str)  // "amF2YXNjcmlwdA=="
// 解码
atob("amF2YXNjcmlwdA==")  // "javascript"

对中文字符进行base64编码解码

var str = "China,中国"
btoa(str)
/*
VM156:1 Uncaught DOMException: Failed to execute 'btoa' on 'Window': 
The string to be encoded contains characters outside of the Latin1 range.
*/
// 先对字符串进行编码
encodeURIComponent(str) // "China%EF%BC%8C%E4%B8%AD%E5%9B%BD"
// 编码
btoa(encodeURIComponent(str))  // "Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ="
// 解码
decodeURIComponent(atob("Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ="))  // "China,中国"

python3代码

对英文字符进行base64编码解码

import base64
name = "javascript"
# 编码
base64.b64encode(name.encode())  # b'amF2YXNjcmlwdA=='
# 解码
base64.b64decode(b'amF2YXNjcmlwdA==').decode()  # javascript

对中文字符进行base64编码解码


name = "China,中国"
# 编码
base64.b64encode(name.encode())  # b'Q2hpbmHvvIzkuK3lm70='
# 解码
base64.b64decode(b'Q2hpbmHvvIzkuK3lm70=').decode()  # China,中国

总结:

js和py3对英文的处理方式基本一致,编码结果也一样

发现,js对中文编码会报错,py对中文可以直接编码


按照js的思路,先按照URI的编码方式将字符编码


from urllib.request import quote, unquote
name = "China,中国"
# 先对文字进行url方式编码
quote(name)  # 'China%EF%BC%8C%E4%B8%AD%E5%9B%BD'
# 编码
base64.b64encode(quote(name).encode()) 
# b'Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ='
# 解码
unquote(base64.b64decode(b'Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=').decode())
# China,中国

总结:

image.png

其中:

s 表示字符串

b 表示编码后的字符


这样,js和python就可以实现相同的Base64编码解码,可以用于前端代码解码,将js代码转换为python代码


参考


javascript 使用btoa和atob来进行Base64转码和解码

Python编程:URL网址链接中的中文编码与解码

简单明了区分escape、encodeURI和encodeURIComponent

相关文章
|
16天前
|
Web App开发 监控 JavaScript
监控和分析 JavaScript 内存使用情况
【10月更文挑战第30天】通过使用上述的浏览器开发者工具、性能分析工具和内存泄漏检测工具,可以有效地监控和分析JavaScript内存使用情况,及时发现和解决内存泄漏、过度内存消耗等问题,从而提高JavaScript应用程序的性能和稳定性。在实际开发中,可以根据具体的需求和场景选择合适的工具和方法来进行内存监控和分析。
|
10天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
12天前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
11天前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
29 4
|
13天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
17天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
19天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
60 6
|
20天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
46 4
|
3月前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
206 6