收到有效的会话 ID 后,访问被拒绝



我有一个有效的python/tk程序,它根据用户选择运行cgi脚本。 我正在努力将其缩减为一个小脚本,只关注一个特定的 cgi 脚本。 它似乎正确获取了会话ID,但是当我启动浏览器时,我不断收到"访问被拒绝"。 由于其他程序有效,我不希望网站出现任何问题。 任何帮助将不胜感激。

更新:如果我使用调试器并在行打印 url 上设置断点,则控制台中打印的 url(如下所示)确实有效。 我现在知道会话 ID 令牌很好。

此外,如果我单步进入网络浏览器功能,然后单步执行,脚本也可以工作。

这是我的代码。

import json
import tornado.web
import tornado.websocket
from tornado import gen
import tornado.ioloop
import webbrowser
from struct import *
request_id = 71
ip_address = "10.22.4.14"

# ************************************************
# Procedure to open websocket and get session id
# ***********************************************
@gen.coroutine
def open_ws(ip, username, password):
    global client
    global request_id
    global session_id
    ws_url = "ws://" + ip + ":7011/"
    try:
        client = yield tornado.websocket.websocket_connect(ws_url, None, None, 5, None, None)
        # print("websocket %s open" % ws_url)
    except error:
        exit()
    # Send Mercury login request
    JSON = '{"requests":[{"request_id": %s, "login":{"username": "%s","password": "%s"}}]}' % (str(request_id), username, password)
    client.write_message(JSON)
    results = yield client.read_message()
    # print("msg is %s" % results)
    # Parse the response of login request to get the error code
    parsed_json = json.loads(results)
    err_code = parsed_json['responses'][0]['request_response']['result']['err_code']
    if 0 == err_code:
        # Parse the response of get_command_result to get the session id
        session_id = parsed_json['responses'][0]['request_response']['login']['session_id']
        # print("login succeeded - session id: %s" % session_id)
    else:
        print("login failed")
    # error_exit(err_code)

def get_token():
tornado.ioloop.IOLoop.instance().run_sync(lambda: open_ws(ip_address, 'admin', 'admin'))
    return session_id
session_id = get_token()
print "Token is " + session_id
url = "http://" + ip_address + "/scripts/dostuff.cgi?session=" + session_id
print url  # add breakpoint here
# launch browser
webbrowser.open(url)

控制台输出:

Token is 7zNSZX9liaUDFFN0ijn-LWQ8
http://10.222.4.14/scripts/dostuff.cgi?session=7zNSZX9liaUDFFN0ijn-LWQ8

已解决。 脚本正在结束,因此在浏览器有机会响应请求之前关闭套接字

相关内容

  • 没有找到相关文章

最新更新