关于网站python自动化过程验证码解决问题
新人第一次提问,谢谢各位大佬,我在做一个基于selenium的自动化测试软件,遇到了一个网站有验证码,是点击一个按钮有概率程序验证码, const Wt = (Yr,Ar)=>({src: Yr,
isGoblin: Ar,
rotation: {
x: randomInt(-25, 26),
y: randomInt(-25, 26)
},
skew: randomInt(-5, 6),
scale: randomDouble(1, 1.2),
flip: randomBoolean()
})
, Zt = []
, kr = (Bt ? [...getKeys(CROPS()), ...getKeys(FRUIT()), ...getKeys(COMMODITIES)] : getKeys(CONSUMABLES)).map(Yr=>ITEM_DETAILS[Yr].image)
, Fr = Bt ? moonSeekers : goblins;
for (; Zt.length < GOBLIN_COUNT; ) {
const Yr = randomInt(0, Fr.length);
Zt.push(Wt(Fr[Yr], !0))
}
for (; Zt.length < ITEM_COUNT; ) {
const Yr = randomInt(0, kr.length);
Zt.push(Wt(kr[Yr], !1))
} return Zt.sort(()=>.5 - Math.random())分析发现关键逻辑在最后一行的return进行了随机,我的想法是如果改掉这个return的随机,那么验证码就可以自动识别到,我试了好多网上的方法,什么本地加载等,都不管用,因为这个脚本所在的JS太大了,40W行代码,本地加载直接卡死,有没有什么方法能实现这个return的替换,替换成 return Zt 即可,谢谢大佬
api或者sdk 使用Selenium执行JavaScript代码来替换返回语句,这样试试?
from selenium import webdriver
# 创建 WebDriver 实例
driver = webdriver.Chrome()
# 打开网页
driver.get("你的网页地址")
# 执行 JavaScript 代码,替换返回语句
script = "return Zt.sort(()=>.5 - Math.random())"# 原始代码
modified_script = "return Zt"# 替换后的代码
driver.execute_script(script.replace(script, modified_script))
# 关闭浏览器
driver.quit()
安装插件hook这个Math.random()为固定值就可以 QvQsuipian 发表于 2023-9-28 08:21
使用Selenium执行JavaScript代码来替换返回语句,这样试试?
from selenium imp ...
好像不行,我F12看了一下还是原来的return 语句 kof21411 发表于 2023-9-28 10:11
安装插件hook这个Math.random()为固定值就可以
大佬能详细说一下吗,第一次做这种,完全不懂 https://blog.csdn.net/weixin_43411585/article/details/109798452
页:
[1]