如何使用令牌和硒(python)登录不和谐

Posted

技术标签:

【中文标题】如何使用令牌和硒(python)登录不和谐【英文标题】:How to log in to Discord using token and selenium (python) 【发布时间】:2021-11-07 02:54:02 【问题描述】:

我在Python中写了一段代码,使用selenium模型通过token号登录discord。

令牌号必须添加到localStorage,所以我运行了javascript代码来添加令牌并添加了它,但是当我转到应用程序-> localStorage->https://discord.com时,我看不到令牌密钥并且它的价值。即使我刷新页面我也无法登录,但是当我手动添加它时,我可以在刷新页面时登录。

注意:我使用这行代码将token添加到localStorage

driver.execute_script('return window.localStorage.setItem("token", "value");')

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

使用

function login(token) 
    setInterval(() => 
      document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"$token"`
    , 50);
    setTimeout(() => 
      location.reload();
    , 2500);
  

login(token);

在 selenium 内部 execute_script()

【讨论】:

哇,它真的有效!你能解释一下代码吗?非常感谢 虽然我用的是contentWindow.localStorage.token,但和你的基本一样【参考方案2】:

我正在做类似的事情,但它对我不起作用。请帮忙

url = "https://discord.com/login"
token = "ODk5NzgwOTg1MjI5NTQxMzc2.YW3wqQ.rBVP0aOPQwnuoPS0EDy4L-Bkozg"
driver_path = r".\driver\chromedriver.exe"

if __name__ == '__main__':

    options = Options()
    options.add_argument("--disable-blink-features=AutomationControlled")
    s = Service(driver_path)

    driver = webdriver.Chrome(service=s, options=options)

    driver.set_window_size(500, 500)
    driver.get(url)
    sleep(15)
    driver.execute_script('''function login(token) 
                          setInterval(() => 
                          document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"$token"`
                          , 50);
                          setTimeout(() => 
                          location.reload();
                          , 2500);
                          
                          login(ODk5NzgwOTg1MjI5NTQxMzc2.YW3wqQ.rBVP0aOPQwnuoPS0EDy4L-Bkozg);''')
    sleep(3)
    driver.refresh()

    sleep(600)
    
File "D:\bots\glack_bot\discord_login.py", line 34, in <module>
    driver.execute_script('''function login(token) 
  File "C:\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 878, in execute_script
    return self.execute(command, 
  File "C:\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 424, in execute
    self.error_handler.check_response(response)
  File "C:\Python\Python310\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: ODk5NzgwOTg1MjI5NTQxMzc2 is not defined
  (Session info: chrome=98.0.4758.102)
Stacktrace:
Backtrace:
    Ordinal0 [0x00CFFDC3+2555331]
    Ordinal0 [0x00C977F1+2127857]
    Ordinal0 [0x00B92E08+1060360]
    Ordinal0 [0x00B95524+1070372]
    Ordinal0 [0x00B953EE+1070062]
    Ordinal0 [0x00B95C9A+1072282]
    Ordinal0 [0x00BE7F39+1408825]
    Ordinal0 [0x00BD7B0C+1342220]
    Ordinal0 [0x00BE75FA+1406458]
    Ordinal0 [0x00BD7976+1341814]
    Ordinal0 [0x00BB36B6+1193654]
    Ordinal0 [0x00BB4546+1197382]
    GetHandleVerifier [0x00E99622+1619522]
    GetHandleVerifier [0x00F4882C+2336844]
    GetHandleVerifier [0x00D923E1+541697]
    GetHandleVerifier [0x00D91443+537699]
    Ordinal0 [0x00C9D18E+2150798]
    Ordinal0 [0x00CA1518+2168088]
    Ordinal0 [0x00CA1660+2168416]
    Ordinal0 [0x00CAB330+2208560]
    BaseThreadInitThunk [0x756CFA29+25]
    RtlGetAppContainerNamedObjectPath [0x775D7A9E+286]
    RtlGetAppContainerNamedObjectPath [0x775D7A6E+238]

【讨论】:

那是因为当您将令牌传递给 javascript 代码中的 login() 函数时,您并未将其作为字符串传递。你的login(ODk5NzgwOTg1MjI5NTQxMzc2.YW3wqQ.rBVP0aOPQwnuoPS0EDy4L-Bkozg);''') 应该是:login("ODk5NzgwOTg1MjI5NTQxMzc2.YW3wqQ.rBVP0aOPQwnuoPS0EDy4L-Bkozg");''') 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review

以上是关于如何使用令牌和硒(python)登录不和谐的主要内容,如果未能解决你的问题,请参考以下文章

如何获取不和谐 oauth2 隐式授权的范围值?

如何在没有硬编码的情况下使用多个不和谐机器人帐户登录?

如何使用扩展和硒打开一个新的标签页?

如何在不使用“除外”python的情况下退出不和谐机器人

Spotify 使用电子邮件和密码登录 python

如何防止不和谐机器人python中的SQL注入攻击