87 lines
2.9 KiB
Python
87 lines
2.9 KiB
Python
import selenium
|
|
from flask import Flask, render_template, request
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
|
|
from selenium.webdriver.firefox.options import Options
|
|
|
|
driver_options = Options()
|
|
driver_options.add_argument('--headless')
|
|
driver_options.add_argument('--no-sandbox')
|
|
browser = selenium.webdriver.remote.webdriver.WebDriver(command_executor="http://172.18.0.2:4444",
|
|
desired_capabilities=DesiredCapabilities.EDGE,
|
|
options=driver_options)
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
@app.route('/')
|
|
def hello_world():
|
|
return 'shipxy decoder'
|
|
|
|
|
|
@app.route('/decode')
|
|
def decode():
|
|
return render_template('./templates/decode.html')
|
|
|
|
|
|
@app.route('/api/decode', methods=['post'])
|
|
def decodeApi():
|
|
try:
|
|
# 注意!这里 get 的 url 只能以最终部署在容器内部的容器内 IP 作为域名,否则模拟浏览器无法获知页面内容。
|
|
# 这主要是因为本工程在部署时与模拟浏览器分处不同的容器中,因此只能将本工程容器和模拟浏览器的容器创建在同一个 docker network 下
|
|
browser.get('http://172.18.0.2:5000/decode')
|
|
except:
|
|
try:
|
|
browser.start_session(capabilities=DesiredCapabilities.EDGE)
|
|
browser.get('http://172.18.0.2:5000/decode')
|
|
except:
|
|
return '500'
|
|
data = request.get_data()
|
|
# inputEle.send_keys(bytes.decode(data))
|
|
js = 'var txt = document.getElementById("encode");txt.value="%s";' % bytes.decode(data)
|
|
browser.execute_script(js)
|
|
button = browser.find_element_by_id('decode')
|
|
button.click()
|
|
inputEle = browser.find_element_by_id('encode')
|
|
text = inputEle.get_attribute('value')
|
|
# browser.close()
|
|
return text
|
|
|
|
|
|
@app.route('/decode_track')
|
|
def decode_track():
|
|
return render_template('./templates/decode_track.html')
|
|
|
|
|
|
@app.route('/api/decode_track', methods=['post'])
|
|
def decodeTrackApi():
|
|
try:
|
|
browser.get('http://172.18.0.2:5000/decode_track')
|
|
except:
|
|
try:
|
|
browser.start_session(capabilities=DesiredCapabilities.EDGE)
|
|
browser.get('http://172.18.0.2:5000/decode')
|
|
except:
|
|
return '500'
|
|
data = request.get_data()
|
|
# inputEle.send_keys(bytes.decode(data))
|
|
js = 'var txt = document.getElementById("encode");txt.value="%s";' % bytes.decode(data)
|
|
browser.execute_script(js)
|
|
button = browser.find_element_by_id('decode')
|
|
button.click()
|
|
inputEle = browser.find_element_by_id('encode')
|
|
text = inputEle.get_attribute('value')
|
|
# browser.close()
|
|
return text
|
|
|
|
|
|
@app.route('/api/getvalue')
|
|
def decodeApi2():
|
|
inputEle = browser.find_element_by_id('encode')
|
|
text = inputEle.text
|
|
return text
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=5000)
|