關於execjs回調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就是文檔。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/283027.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:06
下一篇 2024-12-22 08:06

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論