我正在尝试为网站制作bot,它通过比较keyUp和keyDown之间的时间来检测bot,在网站的源代码中发现了这一点。因此,当使用webdriversend_keys()键入时,所有时间都太小(1ms)/类似,我会被阻塞。每次登录网站时,我需要键入的文本都不一样
我的当前代码,使我被阻止:
import time
import random
text = "Some text"
for l in text:
time.sleep(random.uniform(0.12, 0.4))
element.send_keys(l)
例如,我需要键入字母“s”,所以我确实发送了_键(“s”),根据我对selenium的理解,这个引擎盖下会产生keyDown和keyUp事件来模拟按键“s”的按下和释放。在他们之间是我需要延迟的地方,但我找不到这样做的方法。
在keyUp和keyDown之间的一些随机类人延迟可能会欺骗机器人检测。请随时留下任何关于如何解决此机器人检测问题的想法。
提前感谢您的帮助:)
这会在每个字符之间产生1秒的延迟
这是一个相当棘手的问题。我能想到的唯一方法就是使用
ActionChains
,特别是keyUp和keyDown函数。在Selenium文档中,它说keyup和keydown仅用于“修改器”键(CTRL
、ENTER
、SHIFT
,等等)。但我认为我们也可以用它们来表示普通的字母数字字符。我浏览了大量Selenium源代码,最终发现传入send_keys()
、key_up()
和key_down()
的内容被处理为KeyInput
,一个在this file from the selenium python bindings中定义的类。谢天谢地,这个类似乎非常乐意接受任何密钥,所以希望我们可以继续使用key_up('a')
之类的东西那么现在,如何实现您的实际目标,在所有
key_up
和key_down
之间有一个延迟,然后在下一次按键之前有另一个延迟。我相信你会想玩随机等待时间的范围,因为现在我只是复制了你所做的相关问题 更多 >
编程相关推荐