import execjs
import requests
import json
//读取并编译js文件,运行js内函数获得想要的结果
def getSignatureString():
jsstr = ReadJs()
ctx = execjs.compile(jsstr)
signature =json.dumps(ctx.call("getSignature"))//上面那个js文件中,这个方法用来获取签名
return signature
//读取JS文件,将js代码转换
def ReadJs():
jsfile = open("./../javascript/getSignature.js","r")//打开js所在文件,方式以只读方式打开
codeline = jsfile.readline()
codestr=""
while codeline:
codestr =codestr +codeline
codeline =jsfile.readline()
return codestr
//将运行js获得的ts与signature参数取回来,转换成字典形式,在传递到获取token接口
def getCode():
url=""
id = "4QF88sui99kuiOH"
dict_json =json.loads(getSignatureString())
params = {"id": id, "ts": dict_json['ts'], "signature": dict_json['signature']}
result = requests.post(url, data=params )
response_dic = result.text
success_object =json.loads(response_dic)
return success_object
这样就可对这个python文件进行运行了,记得在当前文件中调用这个函数。本文也是最近项目上的一个小实现,如果好方法,请多指教。
最近接到一个小项目,用python实现一些底层接口,完成数据获取与数据封装,其实本来也不难,其中有一块是要利用python实现获取一个加密签名,再传到第三方接口,获取token,其中它的前端加密算法中有一个是利用crypto.js进行一些列加密,这样其实比较难搞。于是便想利用python来实现调用js生成加密签名,再进行结果回传,查询了一些方案并进行实施,最终获得了想要的结果,特此分享出来。1....
在使用python做爬虫的过程中,有些页面的的部分数据是通过js异步加载的,js调用接口的请求中有时还带有些加密的参数很难破解无法使用requests这样的包直接爬取数据,因此需要借助seleniu来完成js的自动加载。
通过selenium 模拟浏览器的真是操作来获取页面中的所有请求,并且可以查找到一下页面上一些隐藏的元素,这些元素在html源码中无法看到,并且和能通过xpath和正则来捕获,因此需要使用selenium来查找隐藏元素,例如视频网站的播放按钮
import time
# 导入自动化测试模块
from selenium import webdriver
from s
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被人们用于独立的、大型项目的开发和设计
Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了.
自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统管理任务的处理和Web编程,Python已经成为最受欢迎的程序设计语言之一。
Python教学简单易懂,零基础小白也可以学会,只要你有耐心学习从入门到精通.从小白到高手。
※练习使用面向对象的思维设计并编写程序
9、项目实战一、模拟人生游戏
※设定两个故事场景,场景可以穿插衔接,人物之间有关系和互动并且互相影响,根据 不同用户的玩法实现开放式结局
1、Socket 介绍
2、Python socket 语法
3、简单的socket 交互程序
4、Socket Server的开发与使用
5、多线程非阻塞并发自处理
6、练习程序:用SOCKET模拟实现SSH客户端功能
6、项目实战二、开发FTP服务器\客户端软件
※分别开发服务器端和客户端,通过Socket模块实现网络通信,模拟实现FTP主要的文件下载、上传功能、实现多用户并发在线使用。
1、 项目实战三、开发运维审计服务器,实现公司全网用户操作审计需求
※开发一个堡垒机,实现用户可以通过WEB 和命令行登录到所有LINUX服务器上,纪录所有用户命令操作
2、项目实战四、通过Python脚本连接MYSQL数据库实现数据自动入库、更新
3、项目实战五、开发C/S架构备份服务器,实现远程备份
※使用PYTHON SOCKET模块实现文件的远程压缩传输
二、Python中高级课程列表
1、Python 多线程程序开发使用
2、项目实战七、开发实现对上千台服务器的批量管理,分发指令、文件传送的运维管理程序
※用多线程的方式并发连接登录多台LINUX服务器,实现并发命令操作、文件分发,实时结果返回,并可根据服务器性能控制线程量,千台机器改密码1分钟完成。
3、HTML/JAVAScript基础
4、WEB JS Package BootStrap 介绍与使用
※通过BootsStrap 样式制作精美清新的WEB页面
5、使用JSON(实现不同程序间内存数据交换)
6、JQuery/Ajax 基础与使用
※实现页面部分内容与后台交互并实时刷新页面
1、Python WEB 架构Django的介绍、使用
2、Django manage.py
3、Django 视图
4、Django models使用Mysql数据库
5、Django 模板
6、Django url
7、Django Admin
8、编写前后台动态交互页面
三、企业项目实战(web及运维软件开发)
driver = webdriver.Ie(r"IEDriverServer.exe") # 找一个合适版本的IEDriver
js = """
var hello = "hello world";
return hello;
result = driver.execute_script(js)
print(result...
自己写的一些python小爬虫
weibo_album
windows下的新浪微博相册爬虫,可以下载整个微相册的照片。因为微相册是js动态加载的,所以用了来获取网页源码,
使用python的来进行调用。
###功能
在微博搜索中搜索指定的用户名,选择结果中第1个用户,所以用户名越准确越好,默认下载其“微博配图”相册。
可以指定微博相册的链接地址,此时无论是否设置了要搜索的用户名,都会直接访问该地址进行下载,要求必须是微博相册的“列表模式”下的链接地址,其链接类似于http://photo.weibo.com/2206258462/talbum/index?from=profile_wb#!/mode/1/page/1,mode后的参数为1,这也是微博相册的默认模式。
可以设置下载图片大小的最小值,单位为byte,默认为102400byte,即100kb。
微信小程序
服务器返回的是一个数组形式的数据
index.wxml中通过wx:for的方式遍历数组的方式创建view,并且绑定函数,通过wx:for-index="idx"获取下标,使用data-id='{{idx}}'传递参数
index.js中to_content根据传进的参数,让内容区域加载对应的内容
python调用js文件生成参数JS逆向安装exejs与nodejs调用js生成参数
JS逆向
我就随便找了一个网站https://cloud.kingdee.com/passport/#/auth/login
随手输入一个账号密码,抓包后发现请求带着加密的密码(相同密码每次请求字符串都不同)和加密的验证码(有时候不出现),判断是个动态加密,那就针对密码下手把
1、进入第一步JS中打上断点
2、回溯发现,前面三个栈的方法里没有出现加密的js语句,这里继续打断点在第四个异步请求的地方
3、发现在cal
方式一:PyExecJS
PyExecJS 是使用最多的一种方式,底层实现方式是:在本地 JS 环境下运行 JS 代码
支持的 JS 环境包含:Node.js、PyV8、PhantomJS、Nashorn 等
首先,我们需要安装依赖包 PyExecJS
//py_exec_js_demo.py
//安装依赖
pip3 install PyExecJS
然后,从 JS 文件中读取源码
def js_from_file(file_name):
读取js文件
:return:
with open(
要在 JavaScript 中调用 Python 函数,可以使用一些库或者框架,例如 Node.js,PythonShell,Pyodide 等。
下面是一个使用 PythonShell 的示例:
1. 首先需要安装 PythonShell:
npm install python-shell
2. 在 JavaScript 文件中引入 PythonShell:
```javascript
const {PythonShell} = require('python-shell');
3. 创建一个 PythonShell 实例,并调用 Python 函数:
```javascript
var options = {
mode: 'text',
pythonPath: '/usr/bin/python',
pythonOptions: ['-u'],
scriptPath: 'path/to/python/file',
args: ['value1', 'value2', 'value3']
PythonShell.run('your_python_file.py', options, function (err, results) {
if (err) throw err;
// results is an array consisting of messages collected during execution
console.log('results: %j', results);
在 args 参数中传入需要传递给 Python 函数的参数,Python 函数可以通过 sys.argv 获取这些参数。具体的 Python 脚本可以参考如下示例:
```python
import sys
def your_function(arg1, arg2, arg3):
# do something with the arguments
return result
# get arguments from command line
arg1 = sys.argv[1]
arg2 = sys.argv[2]
arg3 = sys.argv[3]
# call the function with arguments
result = your_function(arg1, arg2, arg3)
# print the result
print(result)