处理器排名-19寸显示器分辨率
![sourcenavigator](/uploads/image/0764.jpg)
2023年4月6日发(作者:先锋影音怎么用)
Python⾃动化随机填写问卷(解决智能验证)
问卷调查是⼀种发掘事实现况的研究⽅式,最⼤的⽬的是搜集,累积某⼀⽬标族群的各项科学教育属性的基本资料,可分为描述性研究
及分析性研究两⼤类。在决定是否采⽤问卷法作为研究⼯具,应考量是否能顺利达成研究⽬标以及注意研究样本在问卷上的配合度。
对于当代⼤学⽣来说,马原思修⾏策这些课的实践活动离不开问卷调查,可是各种转发过后却只有寥寥数⼈填写的痛谁⼜懂呢?
⽤selenium⼯具模拟点击填写问卷很简单,可是现在⼤部分公司都有反爬技术,当你模拟点击提交按钮后会弹出来⼀个智能验证,这个时
候后台判断你是Python控制浏览器进⾏操作的,⽆论你⼿动点击还是⾃动点击都会提⽰验证失败。
检测基本原理是检测当前浏览器窗⼝下的tor对象是否包含webdriver这个属性,正常情况下这个值是undefined,当我们
使⽤了selenium,这个属性就会被赋值,⽹站通过js判断这个属性不正常,直接pass了我们的操作。
⽤第三⽅库pyppeteer可以解决⼀部分反爬技术,本⽂不⽤这种⽅法,⼤家可以⾃⾏百度
我们可以通过在页⾯进⼊之前执⾏js代码,将webdriver属性置空,从⽽躲过⽹站的检测
option=Options()
_experimental_option('excludeSwitches',['enable-automation'])
_experimental_option('useAutomationExtension',False)
driver=(options=option)
e_cdp_cmd('iptToEvaluateOnNewDocument',{'source':'Property(navigator,"webdriver",{get:()=>undefined})'})
("/m/")
接下来就是随机填写选择题和填空题,很简单,可以根据⾃⼰的喜好选择,通过random随机选择答案,填空题可以从我们事先设定好的列
表中获取
foriinrange(1,11):
n=t(1,3)
n1=t(1,2)
(0.3)
try:
element=_element_by_css_selector("#div{}>-controlgroup>div:nth-child({})".format(i,n))
()
except:
try:
element=_element_by_css_selector("#div{}>-controlgroup>div:nth-child({})".format(i,n1))
()
except:
pass
input=_element_by_id("q11")
_keys(word)
提交过于频繁的话还是会触发验证,不过这时候系统已经把我们当成了⼀个真⼈,只需要⼀次点击智能验证的按钮即可通过验证,完成问
卷
(1)
try:
element=_element_by_css_selector("#alert_box>div:nth-child(2)>div:nth-child(2)>button")
()
(0.5)
yanz=_element_by_id("rectMask")
()
(4)
except:
pass
()
可以看到问卷的随机效果还是很不错的
附上完整代码
importtime
fromseleniumimportwebdriver
importrandom
j=1
word='填空题'
while(j<51):
#chrome_options=Options()
#chrome__argument('--headless')
#driver=(options=chrome_options)
#driver=()
option=Options()
_experimental_option('excludeSwitches',['enable-automation'])
_experimental_option('useAutomationExtension',False)
driver=(options=option)
e_cdp_cmd('iptToEvaluateOnNewDocument',{'source':'Property(navigator,"webdriver",{get:()=>undefined})'})
("/m/")
(2)
foriinrange(1,11):
n=t(1,3)
n1=t(1,2)
(0.3)
try:
element=_element_by_css_selector("#div{}>-controlgroup>div:nth-child({})".format(i,n))
()
except:
try:
element=_element_by_css_selector("#div{}>-controlgroup>div:nth-child({})".format(i,n1))
()
except:
pass
input=_element_by_id("q11")
_keys(word)
(0.5)
tijiao=_element_by_id("ctlNext")
()
(1)
try:
element=_element_by_css_selector("#alert_box>div:nth-child(2)>div:nth-child(2)>button")
()
(0.5)
yanz=_element_by_id("rectMask")
()
(4)
except:
pass
()
print("已经提交{}次".format(j))
j=j+1
更多推荐
sourcenavigator
发布评论