如何使用令牌和硒(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)登录不和谐的主要内容,如果未能解决你的问题,请参考以下文章