如何在websocket中解码此消息



mycode:

from selenium import webdriver
import sys
import  time
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.chrome.options import Options
import os
import json
chrm_options=Options()
chrm_caps = webdriver.DesiredCapabilities.CHROME.copy()
chrm_caps['goog:loggingPrefs'] = { 'performance':'ALL' }
#driver = webdriver.Chrome(executable_path = 'chromedriver.exe', chrome_options=chrm_options,desired_capabilities=chrm_caps) Windows
driver = webdriver.Chrome(executable_path = 'C:chromedriver.exe', chrome_options=chrm_options,desired_capabilities=chrm_caps) #Linux

def LoadWebDriver() :
print("Web driver Init ")
base_url = "https://pocketoption.com/en/cabinet/demo-quick-high-low/#td"  #Change the site
print('Loading URL ....')
driver.get(base_url )

def WebSocketLog():
for wsData in driver.get_log('performance'):
#print(wsData) 
wsJson = json.loads((wsData['message']))
print(wsData)
#         if wsJson["message"]["method"]== "Network.webSocketFrameReceived":
#             print ("Rx :"+ str(wsJson["message"]["params"]["timestamp"]) + wsJson["message"]["params"]["response"]["payloadData"])
#         if wsJson["message"]["method"] =="Network.webSocketFrameSent":
#             print ("Tx :"+ wsJson["message"]["params"]["response"]["payloadData"])

LoadWebDriver()
print("Waiting")
time.sleep(30) #Capture messages for 30sec, integrate your code here

收到的信息:

Rx :451-["updateStream",{"_placeholder":true,"num":0}]
Rx :W1siQVVEQ0hGIiwxNjMzNTI1MDg2LjM2NiwwLjY3Mjc4XV0=
Rx :451-["updateStream",{"_placeholder":true,"num":0}]
Rx :W1siQVVEQ0hGIiwxNjMzNTI1MDg2LjU0NywwLjY3MjgxXV0=
Rx :451-["updateStream",{"_placeholder":true,"num":0}]
Rx :W1siQVVEQ0hGIiwxNjMzNTI1MDg2LjY5NywwLjY3Mjc5XV0=
Rx :451-["updateStream",{"_placeholder":true,"num":0}]
Rx :W1siQVVEQ0hGIiwxNjMzNTI1MDg3LjU2NiwwLjY3Mjc5XV0=

在pupppter messages中是god,但是在selenium中显示如下

嗨,Rx值看起来像base64编码的字符串。在使用下面的函数之后,我得到了这个值,这是你所期望的吗?

[["AUDCHF" 1633525087.566, 0.67279]]

import base64    
def base64ToString(b):
return base64.b64decode(b).decode('utf-8')

b = "W1siQVVEQ0hGIiwxNjMzNTI1MDg3LjU2NiwwLjY3Mjc5XV0="
print(base64ToString(b))

selenium4:

更新版本
import base64
import json
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.set_capability('goog:loggingPrefs', {'performance': 'ALL'})
driver = webdriver.Chrome(options=options)

def LoadWebDriver():
base_url = "https://pocketoption.com/en/cabinet/demo-quick-high-low/"  # Change the site
driver.get(base_url)

def WebSocketLog():
for wsData in driver.get_log('performance'):
message = json.loads(wsData['message'])['message']
response = message.get('params', {}).get('response', {})
if response.get('opcode', 0) == 2:
payload_str = base64.b64decode(response['payloadData']).decode('utf-8')
try:
symbol, timestamp, value = json.loads(payload_str)[0]
except:
return
print(symbol, timestamp, value)

LoadWebDriver()
time.sleep(60)  # delay for typing login and password
while True:
WebSocketLog()

相关内容

  • 没有找到相关文章

最新更新