मैंने एक प्रश्न यहां लिखा है कि मानव-समान अनुकरण कैसे करें सेलेनियम वेब ड्राइवर और जावा के साथ कर्सर आंदोलन।

इस खोज पर, मैंने पाया कि सेलेनियम वेब ड्राइवर शायद सबसे उपयुक्त नहीं है। यह कर्सर को सीधे नहीं ले जा सकता। या उस फैशन में सक्षम हो जो मुझे चाहिए।

मुझे माउस को भौतिक रूप से स्थानांतरित करने की आवश्यकता नहीं है। जब तक वेबसाइट को लगता है कि कर्सर सामान्य रूप से चल रहा है।

मैंने AutoIt स्वचालन के बारे में सीखा है और कुछ स्क्रिप्ट बनाई हैं। मैंने फ़ोटो अपलोड करते समय आवश्यक कुंजी स्ट्रोक को स्वचालित करने के लिए एक स्क्रिप्ट का निर्माण किया। मेरे पास एक .txt फ़ाइल में अपलोड करने के लिए आवश्यक फ़ाइल पथ लिखने का विचार था। यह मेरे जावा ऐप में किया गया है। फिर जब मैं जावा से अपनी AutoIt .exe फ़ाइल को कॉल करता हूं। यह तब .txt फ़ाइल को पढ़ता है। फ़ाइल पथ URL प्राप्त करें। यह तब फ़ाइल पथ को चिपकाने के लिए आवश्यक संचालन करता है। फिर वेबसाइट पर फाइल अपलोड करने के लिए "ओपन" बटन पर क्लिक करें।

इसके बाद, मैं निर्देशांक सहेज सकता हूं कि मैं माउस को कहां ले जाना चाहता हूं। एक .txt फ़ाइल में। फिर जब मैं .exe AutoIt फ़ाइल को आग लगाता हूं। यह इस .txt फ़ाइल को पढ़ता है और "मानव जैसा" माउस व्यवहार करता है।

मुझे बस यह जानना है कि AutoIt में वास्तविक माउस/कर्सर गति का अनुकरण कैसे किया जाता है? एक ऐसा फ़ंक्शन जिसे मैं कुछ निर्देशांक दे सकता हूं।

मैंने इस सीएसएस और जेएस में करने पर एक लेख देखा ... यह आपको एक अच्छा विचार देना चाहिए।

क्या कोई मदद कर सकता है? या कोई सलाह दें? धन्यवाद।

1
Jack Trowbridge 22 अक्टूबर 2020, 05:37

1 उत्तर

सबसे बढ़िया उत्तर

मेरे प्रश्न पर की गई एक टिप्पणी के लिए धन्यवाद। जो एक स्क्रिप्ट से जुड़ा है। यह आश्चर्यजनक रूप से काम करता है!

यह मेरी कल्पना से बेहतर नॉनलाइनियर माउस मूवमेंट पैदा करता है :)

; Smoother Mouse Move
; by the DtTvB

; Ease in function
func __calci1($i, $sm)
    return $i ^ $sm;
endFunc

; Ease out function
func __calci2($i, $sm)
    return 1 - ((1 - $i) ^ $sm);
endFunc

; Ease in out function
func __calci($i, $sm)
    if ($i < 0.5) then
        return __calci1($i * 2, $sm) / 2;
    else
        return (__calci2(($i - 0.5) * 2, $sm) / 2) + 0.5;
    endIf
endFunc

; Ease backward function
func __calof($i, $sm)
    if ($i < 0.5) then
        return __calci($i * 2, $sm);
    else
        return __calci((1 - $i) * 2, $sm);
    endIf
endfunc

; MAIN FUNCTION
func mouseMove2($x2, $y2)
    $x1 = mouseGetPos(0);
    $y1 = mouseGetPos(1);
    $xv = random(-100, 100);
    $yv = random(-100, 100);
    $sm = random(1.5, 2.5);
    $m = random(50, 160);
    for $i = 0 to $m
        $ci = __calci($i / $m, $sm);
        $co = __calof($i / $m, $sm);
        $cx = $x1 + (($x2 - $x1) * $ci) + ($xv * $co);
        $cy = $y1 + (($y2 - $y1) * $ci) + ($yv * $co);
        mouseMove ($cx, $cy, 1);
    next
endFunc

; Test Script
mouseMove2 (512, 386);
1
Jack Trowbridge 26 अक्टूबर 2020, 15:35