علی اصغر فتحی خواه
علی اصغر فتحی خواه
خواندن ۴ دقیقه·۶ ماه پیش

تایپیست متقلب (ساخته شده با سلنیوم در پایتون)

سلام و هزاران درود! همونطور که در تصویر میبینید سرعت تایپ من داخل سایت TypeTest.io

عدد 640 هست! چیه تعجب کردی؟ اینکه چیزی نیست تازه من 1124 تاش رو هم زدم :) البته بگم خودم دروغ احساس میکنم دروغ گفتم. آره من یه کد با پایتون و با استفاده از از کتابخونه سلنیوم اینکارو کردم. شاید بگید چرا؟ الان داستان رو میگم:

ما یک روزی داخل کلاس بودیم و استاد امتحان تست سرعت تایپ رو داخل این سایت گرفت. و خب منم چون استرس داشتم و روی دستم کنترل درست نداشتم سرعت تایپم خیلی کم شد :( اما وقتی رسیدم خونه یه کاری کردم سرعت تایپم از کل آدم های جهان بهتر شد :) حتی برنامه ام رو تغییر دادم گفتم یک حساب بسازه و با اون لاگین کنم حتی رکورد هم ثبت کردم. باور نمیکنی؟ عکس زیر رو ببین پس:

البته خب چون سرعت تایپی که ثبت شده بود غیر عادی بود دفعه بعد که تست کردم و برنامه اومد لاگین کنه دیدم ای روزگار حساب شما مسدود شده است :( پس کد رو تغییر دادم که مثل آدم تایپ کنه بعد نفر سوم شدم بعد چندروز دوباره مثل اینکه آپدیت شده بود و حساب من اونجا نبود یعنی حسابم مسدود نشده بود ها.


سلنیوم چیه هست و به چه دردی میخوره؟

این دوست خوب ما یه ابزار تعامل با وب سایت ها هست یه ابزار خودکار یعنی چی؟ خلاصه بگم! الان خود شما میایم کروم یا فایرفاکس رو باز میکنی داخل سرچ بار یه چیزی میزنی و این مقاله رو میبینی و میخونی و مثلا که نه باید بزنی روی دکمه لایک کردن😅 بعدش هم میای کامنت میکنی 😆 خب اینکار هارو ما با سلنیوم انجام میدیم میگیم برو فایرفاکس رو باز کن بعد وارد فلان آدرس بشو و بعد که مقاله اومد بالا دکمه لایک رو پیدا کن این دکمه لایک با یکسری کلاس در HTML معلوم شده میگیم دکمه ای رو کیلیک کن که فلان کلاس رو داره اونم میگه چشم! برا کامنت هم همینطور میگیم فلان متن رو به فلان اینپوت با فلان کلاس ارسال کن!
همین بود امیدوارم متوجه شده باشید😎

یه نکته دیگم هست که بگم این تایید کن که انسان هستید رو زیاد دیدم این برای این هست که بیان جلوی این هارو بگیرن البته برای این ها هم بات های هست که میان درستش میکنن و میره بعدی :)

برنامه نویسی همینه از این خنده های رجب بوههه بوههه🤣


خب خیلی گفتم حالا این چطور کار میکنه اول از همه باید این کتابخونه دوست داشتنی رو نصب کنیم با دستور:

pip install selenium

من اینکار رو با فایر فاکس انجام میدم

خب الان نصب شد بریم مرحله بعدی کار های که میخوایم بکنیم به ترتیب:

  • باز کردن فایرفاکس و رفتن به آدرس
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By options = Options()
options.headless = False
driver = webdriver.Firefox(options=options) driver.get('https://typetest.io/')
driver.implicitly_wait(2)

الان با اینکار ما فایرفاکس رو باز میکنیم و به آدرس مشخص شده میرویم. و حالا قدم بعدی:


  • دریافت متن از اون تکست باکسی که هربار آپدیت میشه

و چون قرار هست که اینکار هربار تکرار بشه داخل یک حلقه بینهایت میزاریم.

تصویر زیر نام کلاسی که کاراکتر ها در آن هستند رو نشون میده

هر کاراکتری که در اون باکس هست داخل یک کلاس هست برای همین باید هرچی با اون کلاس هست رو بگیرم کاراکتر هاش رو

while True:
chars = driver.find_elements(By.CLASS_NAME, 'test-char')

الان کاراکتر ها رو از اون باکس گرفتیم و کلاس ها گرفتیم حالا:


  • زدن یک حلقه روی کاراکتر های دریافت شده از اون تکست باکس

اول باید ببینم نام کلاس یا آیدی اون input چی هستش

پس کد ما برای ذخیره اون میشه:

input_field = driver.find_element(By.ID, 'test-input')


  • و ارسال اون کاراکتر ها به اون اینپوتی که اونجا هست
    حالا وقت فور زدن هست:
for char in chars:
# time.sleep(.07)
input_field.send_keys(char.text)

با استفاده از send_keys حرف ها رو ارسال میکنیم و بخش تایمی که کامنت شده هم برای این هست که اگر سرعت خیلی زیاد باشه سایت نمیکشه و ارور میده پس یه تایمی ست کنید براش.


تبریک حالا شما میتونید این رو ران کنید و ببینید بسته به سرعت نت چقدر تایپ میکنه :) البته پروژه کامل و توضیحات بیشتر در گیت هاب بنده قرار داره در اینجا و کد که در اینجا هست دارای بخش لاگین و ثبت نام هم هست.


امیدوارم لذت برده باشید! تا چیز های عجیب و باحال دیگه فعلا :)

پایتونسلنیومseleniumpython
برنامه نویسی برای من مثل چای یا قهوه برای شما است :))
شاید از این پست‌ها خوشتان بیاید