首页 > 编程知识 正文

关于execjs回调python的信息

时间:2023-11-29 19:12:36 阅读:310330 作者:WCII

本文目录一览:

  • 1、请教各位,python编写爬虫,返回http error 521怎么解决
  • 2、python中如何调用js文件中的方法呢
  • 3、python execjs怎么用
  • 4、linux上安装了pyv8 执行execjs的时候想用pyv8的环境去执行,但是 运行的时候 说找不到js的运行环境怎么办
  • 5、怎么样python爬虫进行此网站爬取

请教各位,python编写爬虫,返回http error 521怎么解决

原博主用的是PyV8执行JS代码,我换了PyExecJS

import execjs

import re

import requests

url = ""

HERDERS = {

"Host": "",

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',

}

def executejs(html):

# 提取其中的JS加密函数

js_string = ''.join(re.findall(r'(function .*?)/script',html))

# 提取其中执行JS函数的参数

js_func_arg = re.findall(r'setTimeout("D+((d+))"', html)[0]

js_func_name = re.findall(r'function (w+)',js_string)[0]

# 修改JS函数,使其返回Cookie内容

js_string = js_string.replace('eval("qo=eval;qo(po);")', 'return po')

func = execjs.compile(js_string)

return func.call(js_func_name,js_func_arg)

def parse_cookie(string):

string = string.replace("document.cookie='", "")

clearance = string.split(';')[0]

return {clearance.split('=')[0]: clearance.split('=')[1]}

# 第一次访问获取动态加密的JS

first_html = requests.get(url=url,headers=HERDERS).content.decode('utf-8')

# 执行JS获取Cookie

cookie_str = executejs(first_html)

# 将Cookie转换为字典格式

cookie = parse_cookie(cookie_str)

print('cookies = ',cookie)

# 带上cookies参数,再次请求

response = requests.get(url=url,headers=HERDERS,cookies=cookie)

print(response.status_code)

python中如何调用js文件中的方法呢

1、打开pycharm开发工具,点击File菜单,选择Settings...,进行第三方模块安装;输入selenium,点击Install Package。

2、接着在python项目的指定文件夹下,鼠标右键新建python文件,输入文件名并点击Python file。

3、打开新建的文件,依次导入selenium、webdriver和time。

4、调用webdriver模块中的Chrome(),使用get()获取对应网址的内容。

5、调用find_element_by_id()获取对应页面元素,然后调用按钮点击事件。

6、修改get()方法中的请求路径,然后保存代码并运行文件,查看运行结果。

python execjs怎么用

可以在webstorm中copy这个encode函数带上自己的用户名运行,返回的结果就是su的值,这个值在之后进行post提交的时候也会用到。

如果对加密有一定经验的同学可能一眼就会看出这个是base64编码,python中有个base64模块可以干这个事情。

linux上安装了pyv8 执行execjs的时候想用pyv8的环境去执行,但是 运行的时候 说找不到js的运行环境怎么办

pyv8 的作用是在python中执行js代码,然后可以使用js里的变量等内容。python取得javascript里面的值、javascript取得python里面的值、python和javascript里面的函数交互

mac下的安装:pip install -e git://github.com/brokenseal/PyV8-OS-X#egg=pyv8

安装后有两个文件:一个PyV8.py 另一个_PyV8.so

下面示例是执行js文件

from pyv8 import PyV8

ctxt = PyV8.JSContext()

ctxt.enter()

with open('/usr/graph.js') as f:

jsdata = f.read() # print jsdata

print ctxt.eval(jsdata)

下面是执行一段代码

import PyV8

ctxt = PyV8.JSContext()

ctxt.enter()

func = ctxt.eval("""

(function(){

function hello(){

return "Hello world.";

}

return hello();

})""")print func()

则在python环境中打印出js执行的结果:Hello world.

更多信息可参考《Linux就该这么学》

怎么样python爬虫进行此网站爬取

是加密的,解密方法在JS里面可以弄出来。

首先要AES解密,可以【Python:import Crypto.Cipher.AES】包,解密mode是CFB,seed是"userId:"+uid+":seed"的SHA256值,解密的key是seed[0:24],iv是seed[len(seed)-16:]。

如果没有登录,uid就是用的"anyone",这时候的seed是"61581AF471B166682A37EFE6DD40FE4700EE337FEEEF65E2C8F203FCA312AAAB",也就是key为"61581AF471B166682A37EFE6",iv为"C8F203FCA312AAAB"。

解密后文件是压缩过的,解压即可得到一个JSON。这部分解压我没仔细看他的算法,好像是gzip,直接用【Python:import gzip】解压有点出错,可能没用对或者不是这个算法,你在研究一下。第二种投机的方法就是,可以通过【Python:import execjs】直接调用他的pako.js文件的JS的inflate()函数来解压这块。JS代码混淆后看起来是非常难懂的,使用这种做法可以不用太看懂加密的算法,效率当然写Python实现这个解密算法低1点咯。

最后的JSON再用【Python:import demjson】解析,text的value就是文档。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。