2011-02-23 17 views
6

कैसे पता लगाएं कि माउस क्लिक अनुकरण किया गया है या नहीं? जब माउस किसी प्रोग्राम या वास्तविक माउस डिवाइसमाउस क्लिक कानूनी या स्वचालित है या नहीं, इसका पता कैसे लगाया जाए?

द्वारा भेजें पर क्लिक करें ... मैं एक प्रणाली का पता लगाने प्रोग्रामिंग कर रहा हूँ एक खेल बॉट, autoclicks, आदि है कि केवल कानूनी माउस को स्वीकार करने से बचने के लिए क्लिक करता है

+11

क्लिक को अनदेखा करें। यदि कोई और क्लिक है तो यह वास्तविक माउस होने की संभावना है। उस पर ध्यान न दें और यदि आपको कई क्लिक मिलते हैं तो आप सुनिश्चित कर सकते हैं कि एक irate उपयोगकर्ता क्लिक करने का प्रयास कर रहा है .... – T33C

+2

संभव नहीं है। कंप्यूटर उन्हें उसी तरह व्याख्या करता है, यह बिंदु है। अन्यथा, एक अनुरूपित माउस ईवेंट के लिए वास्तविक माउस क्लिक के समान कार्यक्षमता के लिए यह संभव नहीं होगा। निस्संदेह ऐसा करने का एक बेहतर तरीका है जिसे आप प्राप्त करने की कोशिश कर रहे हैं। –

+2

कार्यक्रम व्यवहार में परिवर्तन या उपयोगकर्ता विवश तो इसे पूरी तरह पटकथा के उपयोग को अवरुद्ध करना होगा करने के लिए एक रेटिना स्कैनर –

उत्तर

0

मैं सुनिश्चित नहीं हूं सही सटीकता के साथ निर्धारित करने का एक तरीका है कि माउस क्लिक स्वचालित है या नहीं। मेरा मतलब है, आप अपना खुद का यूएसबी ड्राइवर लिख सकते हैं जो देशी माउस ड्राइवर और ओएस के बीच बैठता है और केवल आपके लिए "असली" क्लिक रिले करता है। हालांकि, यहां तक ​​कि यूएसबी डिवाइस (एक स्मार्टफोन की तरह) में प्लगिंग करके इसे पराजित किया जा सकता है जिसे कंप्यूटर होस्ट करने के लिए यूएसबी पैकेट भेजने के लिए प्रोग्राम किया गया है।

आप इसे पूरा करने की कोशिश कर रहे हैं जिसके लिए आपको वास्तविक माउस क्लिक और नकली वाले लोगों के बीच अंतर करने की आवश्यकता है?

1

प्रश्न विवरण पर थोड़ा पतला है।

घटनाओं को माउस को घुमाने के बिना सीधे नियंत्रण में भेजा जा सकता है ताकि पता लगाया जा सके कि जब माउस क्लिक ईवेंट प्राप्त करता है और देखें कि यह नियंत्रण पर है या नहीं। कीबोर्ड इनपुट के लिए नियंत्रण फोकस की आवश्यकता होती है, इसलिए उसे भी जांचें।

ऐसी स्थितियों के लिए जहां माउस चलता है, आप यह नहीं बता पाएंगे कि माउस आंदोलन रिकॉर्ड किया गया है और वापस खेला गया है या नहीं। यदि इसकी लिपि गई है तो शायद आप नियंत्रण के पैरेंट पैनल में माउस व्यवहार की निगरानी कर सकते हैं और यह सुनिश्चित करने के लिए कि क्या यह वास्तविक है या नहीं, उन घटनाओं और आंदोलनों का उपयोग करें। एक स्वचालित क्लिक कहीं से भी दिखाई नहीं दे सकता है और संभावनाओं पर ध्यान केंद्रित करने, घटनाओं पर ध्यान केंद्रित करने का कारण बन सकता है।

1

माउस के कुछ विशेषज्ञ हार्डवेयर और सॉफ़्टवेयर के साथ ही यह संभव होगा कि वास्तविक यांत्रिक क्लिक के प्रमाण भेज सकें। सॉफ्टवेयर के माध्यम से यह संभव नहीं है।

0

अपने कार्यक्रम में पिछले एक्स माउस घटनाओं को लॉग करके एक सांख्यिकीय सीखने का समाधान बनाएं। जब उपयोगकर्ता नियंत्रण पर क्लिक करता है, तो अंतिम एक्स क्रियाओं के आधार पर संभावना निर्धारित करें कि यह वास्तविक क्लिक है।

वास्तविक क्लिक और स्वचालित परिदृश्यों की एक बड़ी विविधता का उपयोग करके अपने समाधान को प्रशिक्षित करें।

यह स्पष्ट रूप से एक गारंटीकृत काम समाधान नहीं है और किसी और चीज़ से मज़ेदार है।

10

यह आपके द्वारा लिखे गए एप्लिकेशन के प्रकार पर थोड़ा सा निर्भर करता है, लेकिन यदि आप कर सकते हैं, तो मैं कर्सर आंदोलन देखता हूं, क्लिक नहीं। मानव माउस आंदोलन में गैर-वर्दी गति, प्रतिक्रिया समय, अपर्याप्तताएं (आपके बटन के विभिन्न निर्देशांक पर क्लिक आदि ...) हैं।

इसके अलावा, आप स्क्रिप्ट के लिए मुश्किल से बातचीत करने की यादृच्छिक रूप से बॉट्स के खिलाफ एक गुई की रक्षा कर सकते हैं। उदाहरण के लिए: यदि स्क्रिप्ट हमेशा एक ही स्थिति में होने वाले बटनों पर निर्भर करती हैं, तो मैं यह सुनिश्चित कर दूंगा कि, सहज ज्ञान रखने की कोशिश करते समय, संवाद हर बार थोड़ा अलग स्थिति में पॉप अप होना चाहिए।

अन्यथा: यह पता लगाने का कोई तरीका नहीं है कि माउस वास्तविक है या वास्तव में अच्छी तरह से अनुरूपित है या नहीं। विंडोज HID/MacOS/लिनक्स चालक परत चूहे, TrackPens, trackballs, आकर्षित-पैड के बीच भेद दूर एब्सट्रैक्ट, स्क्रीन को छूने ... और निश्चित रूप से पटकथा चूहों ...

7

हालांकि ब्लॉग पोस्ट खुद के बारे में है अलग-अलग मुद्दे, मैं आपको रेमंड चेन के उत्कृष्ट Old New Thing पर संदर्भित करता हूं।इस विशिष्ट ब्लॉग पोस्ट में उन्होंने एक आवेदन में जा रहा संदेश मानकों की वैधता के बारे में बात करती है, लेकिन यह भी कहना है कि बनाता है:

संभावना है कि संदेश के प्रेषक चाल खेल रहे हैं और आप के लिए झूठ बोल रहा है पर चर्चा कोई मतलब नहीं है क्योंकि (1) आपके कार्यक्रम को सिर्फ रूज के साथ जाना चाहिए और नकली मेनू संदेशों का जवाब देना चाहिए जैसे कि वे असली मेनू संदेश थे, क्योंकि (2) यह बताने का कोई तरीका नहीं है कि आप किसी भी तरह से झूठ बोल रहे हैं। झूठ बोलने के लिए, आपको प्रोग्रामर की मानसिकता में पढ़ने में सक्षम होना होगा जिसने आपको संदेश भेजा था।

अनिवार्य रूप से तर्क यह है कि आपको माउस क्लिक के रूप में माउस क्लिक के जवाब देना चाहिए, भले ही वे क्लिक कैसे उत्पन्न हुए हों।

1

हालांकि मेरे दूसरे उत्तर में मैंने उल्लेख किया है कि आपको आदर्श रूप से केवल क्लिक के रूप में क्लिक का जवाब देना चाहिए, "प्रोग्रामेटिक" क्लिक कैसे उत्पन्न होता है, इस पर निर्भर करता है कि एक काम संभव हो सकता है।

मैं एक Windows मंच संभालने हूँ, "vb.net" टैग की वजह से:

WinAPI के साथ आप संदेश किसी भी खिड़की करने के लिए अनुकरण में, उदाहरण के लिए, एक WM_LBUTTONDOWN घटना भेज सकते हैं। इस संदेश में बटन दबाए जाने पर माउस के एक्स और वाई स्थान को शामिल किया जाएगा - या जहां प्राप्त प्रोग्राम होने की अपेक्षा करता है। जब आप संदेश को संभालते हैं तो आप वास्तविक कर्सर स्थिति प्राप्त करने के लिए GetCursorPos कॉल का उपयोग कर सकते हैं। सत्यापित करें कि वर्तमान स्थिति के करीब है जो संदेश में है, और इसे एक क्लिक के रूप में संभालती है, अन्यथा इसे अनदेखा करें।

ध्यान रखें कि संदेश कतार की प्रकृति ऐसी है कि घटना को संभालने में कुछ समय लग सकता है, और माउस थोड़े समय में एक लंबा रास्ता तय कर सकता है।

यह समाधान केवल तभी काम करेगा जब "क्लिक" एक सरल भेजें/पोस्ट मैसेज द्वारा उत्पन्न होता है। यदि क्लिक उत्पन्न करने वाला एप्लिकेशन माउस के आंदोलन को भी अनुकरण करता है, तो आपको शायद अन्य उत्तरों देखना चाहिए :)

+0

दुर्भाग्य से पर्याप्त नहीं होगा; यह बहुत सारे झूठे सकारात्मक तरीके का कारण बन जाएगा। संदेश अंतराल का मतलब यह है कि "निकटता" की कोई सीमा नहीं है जो अच्छी तरह से व्यवहार करेगी। हालांकि विचार के लिए यह अच्छा खाना है। – tenfour

2

mouse keys नकली माउस इनपुट या कानूनी है? माउस इनपुट सिमुलेट करने का बिंदु उन्हें वास्तविक माउस इनपुट की तरह दिखाना है। यदि सिमुलेशन अपना काम कर रहा है, तो आपका काम असंभव है। क्षमा करें, यह आपके लिए सॉफ़्टवेयर का अभिशाप & आशीर्वाद है। यहां कुछ और अपूर्ण विचार कर रहे हैं:

  1. उपयोग GetKeyboardState और सत्यापित करें कि बटन राज्यों सही हैं। यदि संदेश फ़ेकर PostMessage का उपयोग कर रहा है, तो वे संभवतः कीबोर्ड स्थिति सेट नहीं करेंगे और यह फ़ैरीरी इंगित करेगा।
  2. यदि आप ज्ञात अनुप्रयोगों को लक्षित कर रहे हैं जो इनपुट सिमुलेशन कर रहे हैं, तो उन्हें पहचानें और शिकायत करें। यह कई कारणों से बिल्कुल सही नहीं है।
  3. फ़ज़ी लॉजिक, जैसा कि कई अन्य लोगों ने सुझाव दिया है।

आप, के रूप में वहाँ कोई सामान्यीकृत जवाब है रचनात्मक हो सकता है और एक नकली घटना और एक वास्तविक एक आप करने के बीच अंतर यह पता लगाने की जरूरत है।

0

यह आपके विचार से कहीं अधिक कठिन है क्योंकि इनपुट मैक्रो प्रोग्राम कानूनी आपके गेम में माउस और कीबोर्ड इनपुट संदेश उत्पन्न करते हैं।मुझे नहीं लगता कि यह जांचने का कोई तरीका है कि इनपुट संदेश वास्तव में भौतिक हार्डवेयर इनपुट (जैसे माउस या कीबोर्ड) द्वारा ट्रिगर किया जाता है जब तक कि ओएस आपको इनपुट-ड्राइवर-स्तर की पहुंच प्रदान न करे।

चूंकि यह एक खेल के लिए विशेष रूप से है, तो आप देख सकते हैं कि अन्य खेलों इस स्थिति से निपटने। आम तरीकों में से कुछ कर रहे हैं

  1. चेक माउस क्लिक की आवृत्ति। (मनुष्य प्रोग्राम के रूप में तेज़ी से क्लिक नहीं कर सकते हैं।)

  2. यादृच्छिक बिंदुओं पर या जब यह संदेह होता है, तो सत्यापित करने के लिए CAPTCHA का उपयोग करें। सभी प्रक्रियाओं एक मशीन में चल रहा का निरीक्षण करने के उद्देश्य को धोखा दे के लिए जाना जाता कार्यक्रमों पता लगाने के लिए निगरानी उपकरणों बाहर

  3. का उपयोग करें: (http://www.threadmeters.com/v-1Vvd/CAPTCHA_The_Obvious_AntiBot_Solution/ इस पढ़ें)। भाप यह करता है। Valve Anti-Cheat System देखें बर्फ़ीला तूफ़ान WoW भी Warden के साथ एक ही चीज़ करता है।

मेरा अपना सलाह होगा "आपकी गेमप्ले प्रणाली का उपयोग करें"। चूंकि प्रत्येक गेम के अपने नियम और गेमप्ले शैलियों होते हैं, इसलिए यह पता लगाना मुश्किल नहीं होगा कि कोई खिलाड़ी धोखा दे रहा है या नहीं। यह दृष्टिकोण एक सामान्य समाधान नहीं होगा और यह मूर्खतापूर्ण हो सकता है लेकिन यदि यह आपके गेम के लिए काम करता है, तो क्यों नहीं? :)

1

यह नहीं किया जा सकता (मज़बूती से (अकेले सॉफ्टवेयर के साथ वैसे भी))

मैं WIN32API पिक्सल// वीडियो गेम और अन्य के बड़े हिस्से को स्वचालित करने के पढ़ माउस हेरफेर भेज कीस्ट्रोक्स के लिए कॉल का उपयोग किया है दोहराव कार्य। इनपुट का विश्लेषण करने के लिए आप बहुत सारे कोड लिख सकते हैं, लेकिन समान रूप से स्मार्ट डेवलपर्स बस अपने कोड को मिलान करने के लिए संशोधित कर रहे हैं।

जब मैं पहली बार एक माउस क्लिक स्वचालित करने के लिए प्रयास करते हैं, कि सभी मुझे क्या करना होगा। एक माउस क्लिक भेजें। और ज्यादातर समय यह काम करता है। आपके पास कोड हो सकता है जो माउस आंदोलन और माउस घटनाओं के पूरे ढेर को ट्रैक करता है जो एक वैध क्लिक के साथ आग लगेंगे और कहेंगे, 'यह वास्तविक नहीं था - हम इसे अनदेखा करते हैं' लेकिन कुछ भी डेवलपर को माउस आंदोलनों को लागू करने से रोकता है।

माउस घटनाओं keypresses तुलना में अधिक जटिल कर रहे हैं; लेकिन यह अनिवार्य रूप से एक ही विचार है। यदि आप कोड लिखते हैं जो कि कीप्रेस के बीच समय पर नज़र रखता है और यह निर्धारित करता है कि मैं आपके आवेदन में '250' अंतराल में '2' कुंजी भेज रहा हूं, तो आप तय कर सकते हैं कि मैं एक बॉट हूं। लेकिन, मैं बस 250 एमएस में कीस्ट्रोक भेजने के लिए अपना कोड संशोधित कर सकता हूं + -25 और 25 एमएस के बीच एक यादृच्छिक मूल्य।

यह बिल्ली और चूहे की एक कभी न खत्म होने खेल है। सबसे अच्छा समाधान है कार्य को गैर-तुच्छ बनाने के लिए स्वचालन के सरल रूप लागू नहीं होते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे