问卷星全自动填写脚本浅尝
一、需求分析
- 這兩天有一個小伙伴出于論文的需要,請教我是否有辦法可以給問卷星刷單。由于需要幾百份的數據,人工刷起來比較麻煩,為此我便研究了一番。
- 剛開始嘗試py腳本,使用post表單的方式進行刷單。經過嘗試后發現,在post的請求鏈接中包含有許多個參數需要進行對應的計算才能得到的。由于繼續這個方式,需要研究網頁的源碼,感覺比較費勁,暫時擱置了。
- 之后嘗試了使用模擬操作的方式進行,過程使用油猴腳本進行模擬操作,最終也實現了想要的功能。
- 貼一下原文地址:https://itxiaoye.top/article/10 [ [ 我的文章] ]
二、工具選取
三、摸索過程
急切需要得知解決方案de小伙伴們,可以直接奔向==>【四、解決方案】20220313
一開始直接使用 fiddler 抓包工具,監聽問卷星填單完成后提交的請求,從中找到對應的請求鏈接和發送數據,使用py模擬相同的post請求:
ua = UserAgent() def get_headers() -> json:return {"User-Agent": ua.random, #隨機代理"Referer": "https://www.wjx.cn/jq/27644141.aspx","Origin": "https://www.wjx.cn",}url = "https://www.wjx.cn/joinnew/processjq.ashx?curID=27644131&submittype=1&t=1647062508952&starttime=2022%2F3%2F12%2013%3A21%3A28&ktimes=169&rn=2104031809&jqpram=HMLSiLXZb&hlv=1&sd=http%3a%2f%2fwww.wjx.cn%2f&jqnonce=df6a765a-2be7-47f9-97f2-94304e4138f2&jqsign=mo%3Fh%3E%3F%3Ch%24%3Bkl%3E%24%3D%3Eo0%240%3Eo%3B%240%3D%3A9%3Dl%3D8%3A1o%3B&jwt=6&nw=1&jpm=55"#請求鏈接 data ="submitdata=1%243%7D2%241%7D3%241%7D4%241%7C2%7D5%243%7D6%243%7D7%243%7D8%242%7D9%242%7D10%246%7C7%7D11%243%7D12%243%7D13%242" #請求數據 sleep_time = 12 # 休眠時間while True:try:r = requests.post(url, headers=get_headers(), data=data)print("------ "+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]+" ,"+str(r.text)+"------")except Exception as e:logging.error(e)time.sleep(sleep_time)經過測試發現,請求的時候會返回提示(------ 2022-03-14 17:57:33.678 ,7〒請點擊智能驗證碼進行驗證!------),經過分析發現是請求鏈接后邊的一堆變量需要根據特定的規則進行刷新才行。如果要解決遇到的問題,需要分析網站的源代碼,所以就暫時嘗試其他的辦法。
20220314
分析問卷星的提單操作:(1)填完題目后;(2)需要點擊提交按鈕;(3)點擊彈出的智能驗證按鈕;(4)進行滑塊操作。
點擊瀏覽器中已經安裝好的油猴插件,選擇添加腳本
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HMM8LTU7-1647271049306)(https://api.itxiaoye.top/uploads/imgs/article/20220314/35e4af2628255b7dea2f61154a51fd23.png)]
輸入問卷星刷的自動化操作腳本。我的油猴腳本代碼,可以進行下載或者安裝使用 [ 腳本 ]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kLBE6hnL-1647271049310)(https://api.itxiaoye.top/uploads/imgs/article/20220314/f38e0d7e42a941beca6b20505a8e4c9d.png)]
啟動剛安裝的油猴腳本,打開我對應的問卷網址 [ 問卷 ],便能夠自動進行問卷刷單。當前只是簡單做了一些單選題目,并且設置每個題目選項的概率,同時考慮到題目的關聯性。更多的邏輯操作、更多的其他類型題目可以舉一反三,修改油猴腳本進行完成(需要會JavaScript語言編程基礎)。
在刷的次數比較多了之后會出現如下報錯,這時候就是因為智能驗證沒有過關。經過分析,智能驗證是會檢測用戶的點擊是為腳本點擊還是真實點擊(會在click操作的時候獲取對應的瀏覽器數據判斷當前是否真的有鼠標點擊),這個問題通過油猴腳本暫時沒有解決方案。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5XNZwe7J-1647271049312)(https://api.itxiaoye.top/uploads/imgs/article/20220314/ec8a9cd2a2afd56eca9f56e7c2ebc062.png)]
上邊遇到的智能驗證問題,我找到了一個比較好的解決方法,可以算是通過降維打擊進行解決。我們編寫的油猴腳本是跑著瀏覽器上的,它并不能解決瀏覽器本身限制的問題,但是瀏覽器是在電腦上邊的,所以可以通過電腦上邊入手。
不賣關子了,就是通過類似按鍵精靈的方式,使用電腦的自動腳本進行鼠標的操作,使得瀏覽器認為鼠標有真實的動作事件。
根據上邊提到的,我便使用 AutoHotkey [ 官方教程 ] 進行對應的操作。
在刷問卷的同時,我會啟動鼠標定時移動一下并且點擊一下,這樣能確保瀏覽器在智能驗證的時候識別到鼠標事件,判斷點擊有效。對應的 AutoHotkey 代碼如下,需要先運行腳本,然后在啟動了油猴腳本刷單之后,按下 ctrl+j 啟動鼠標定時事件(需要將鼠標移動到旁邊空白的位置,避免誤點),在停止的時候,按下 ctrl+q 停止鼠標定時事件。
需要注意的一些問題:(1)使用同一個ip進行刷問卷,在刷了幾十上百個的時候可能會出現提交不成功的問題,這個可能是問卷星后臺限制了同一個ip的填單速度,我測試停止一小段時間后便能夠再次快樂刷起來;(2)使用f12獲取右鍵查看源碼,會導致刷問卷失敗的問題。
四、解決方案
在瀏覽器中安裝油猴插件,然后安裝對應的自動刷問卷星的代碼 [ 腳本 ]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-M9WHDxFx-1647271049314)(https://api.itxiaoye.top/uploads/imgs/article/20220314/f38e0d7e42a941beca6b20505a8e4c9d.png)]
使用 AutoHotkey [ 官方教程 ] 解決提交問卷之前的智能驗證問題。
對應的 AutoHotkey 代碼如下,需要先運行腳本,然后在啟動了油猴腳本刷單之后,按下 ctrl+j 啟動鼠標定時事件(需要將鼠標移動到旁邊空白的位置,避免誤點),在停止的時候,按下 ctrl+q 停止鼠標定時事件。
啟動剛安裝的油猴腳本,打開我對應的問卷網址 [ 問卷 ],便能夠自動進行問卷刷單。當前只是簡單做了一些單選題目,更多的其他類型題目可以舉一反三,修改油猴腳本進行完成(需要會JavaScript語言編程基礎)。
需要注意的一些問題:(1)使用同一個ip進行刷問卷,在刷了幾十上百個的時候可能會出現提交不成功的問題,這個可能是問卷星后臺限制了同一個ip的填單速度,我測試停止一小段時間后便能夠再次快樂刷起來;(2)使用f12獲取右鍵查看源碼,會導致刷問卷失敗的問題。
五、總結
- 完成時間:2022-03-14 23:02
- 出于需求和好奇,進行并完成了這一次自動化操作腳本的開發。這一個小探索,只是簡單完成了自動操作的流程,中間的詳細邏輯和特定的功能需求還需要小伙伴們自己根據需要進行油猴腳本的修改。
- AutoHotkey 這個電腦的自動操作腳本也是我第一次使用,感覺還是挺有意思的!
- 在探索的過程中,使用py腳本進行post數據刷問卷的方法還沒有完全走通,這個需要花些時間研究一下網頁邏輯代碼,感興趣的小伙伴們也可以一塊探討探討~
總結
以上是生活随笔為你收集整理的问卷星全自动填写脚本浅尝的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓-天气预报系统
- 下一篇: mapgis新手教程(非常适合新手参考)