স্ট্যাক এক্সচেঞ্জ সাইটগুলির জন্য একটি কল্পিত বট তৈরি করুন


12

আপনার চ্যালেঞ্জ আজ ব্যাজগুলিতে প্রতারণা করা!

আপনি একটি বট তৈরি করবেন যা স্ট্যাক এক্সচেঞ্জ সাইটের সাথে সংযুক্ত হবে, আপনার হিসাবে লগ ইন করবে, / প্রশ্ন পৃষ্ঠাগুলি দেখুন, একটি প্রশ্ন দেখুন এবং তারপরে "সম্পর্কিত" সাইডবারে অন্যান্য 9 টি প্রশ্ন দেখুন (কারণ এটি "হিসাবে গণনা করার পক্ষে যথেষ্ট বলে মনে হচ্ছে" ক্রিয়াকলাপ, "এবং আমার কোনও কিছুর মান নির্ধারণ করা দরকার)।

এই বটটি অবশ্যই ব্যবহারকারীদের কোনও ইনপুট বা ক্রিয়া ছাড়াই প্রতিদিন একবারে এই প্রক্রিয়াটি অতিক্রম করতে হবে। এটি চলমান বামে থাকতে সক্ষম হওয়া উচিত, এবং ব্যবহারকারীর কম্পিউটারে কখনও স্পর্শ করতে সক্ষম হওয়া উচিত, এবং পরের দিনগুলির গণনা এখনও বাড়ানো হবে। সাইটটি "দেখার" পরে, এটি অবশ্যই "ভিজিট করা" মুদ্রণ করবে।

আপনি ধরে নেবেন যে ব্যবহারকারী স্ট্যাক এক্সচেঞ্জ-সরবরাহিত ওপেনআইডি ব্যবহার করছেন।

প্রোগ্রামটির ইনপুটটি সাইটের ইউআরএল, এসই ওপেনআইডি ইমেল এবং এসই ওপেনআইডি পাসওয়ার্ড হবে। উদাহরণ স্বরূপ:

/programming// doorknob@doorknob.doorknob password

আপনি চাইলে এগুলি ইনপুট করতে পারেন।

আপনার প্রোগ্রামটি অবশ্যই সর্বনিম্নের জন্য কাজ করবে:

(কেবল এটি নিশ্চিত করা যে এটি সর্বজনীন।

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে!


1
ক্রিয়াকলাপের জন্য আমার সর্বনিম্ন যা করতে হবে তা ছিল আমার ব্যবহারকারীর পৃষ্ঠাটি visit কোনও প্রশ্ন পড়ার দরকার নেই। (তবে এটির কারণে নিয়মগুলি পরিবর্তন করবেন না))
কেন্ডাল ফ্রে ফ্রে '

4
শুভতার জন্য ধন্যবাদ চ্যালেঞ্জটি এমন কোনও বট তৈরি করা ছিল না যা এলোমেলোভাবে প্রতিদিন 40 টি প্রশ্ন / উত্তরকে নীচে নামিয়ে দেয়।

1
স্ট্যাক এক্সচেঞ্জের সুযোগ দেওয়া, এটির শোষণের বিষয়ে কোনও প্রশ্ন না আসা পর্যন্ত এটি কেবল সময়ের বিষয় ছিল।
পাইরুলেজ

উত্তর:


11

রুবি, 456 টি অক্ষর

require'mechanize'
s,*e=gets.split
a,o=Mechanize.new,'http://openid.stackexchange.com/'
a.agent.http.verify_mode=OpenSSL::SSL::VERIFY_NONE
l=a.get(o+'account/login').forms[0]
l.email,l.password=e
a.submit l,l.buttons[0]
g=a.get(s+'/users/login').forms.find{|f|f.action=='/users/authenticate'}
g.openid_identifier=o
a.submit g,g.buttons[-1]
loop{p=a.get s+'/questions'
10.times{p=p.links.find{|i|i.href=~/^\/questions\/\d/}.click}
puts'visited'
sleep 86400}

অবরুদ্ধ সংস্করণ:

require 'mechanize'

site, email, password = gets.split

agent = Mechanize.new
agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE

login_form = agent.get('http://openid.stackexchange.com/account/login').forms.first
login_form.email = email
login_form.password = password
agent.submit login_form, login_form.buttons.first
puts 'logged in with SE openid'

site_login_form = agent.get(site + '/users/login').forms.find {|form| form.action == '/users/authenticate' }
site_login_form.openid_identifier = 'http://openid.stackexchange.com/'
agent.submit site_login_form, site_login_form.buttons.last
puts 'logged in to site'

loop {
    page = agent.get(site + '/questions')
    10.times do page = page.links.find{|link| link.href =~ /^\/questions\/\d/ }.click; end
    puts 'visited'
    sleep 60 * 60 * 24
}

7
আপনি কি আপনার গিথুব অ্যাকাউন্টে সর্বাধিক স্টোরেজ অতিক্রম করেছেন এবং আপনার চশমা এবং উত্স কোডের জন্য ওভারফ্লো স্টোরেজ হিসাবে প্রশ্নোত্তর স্ট্যাকএক্সচেঞ্জ ফর্ম্যাটটি ব্যবহার শুরু করেছেন? ;-)
জোনাথন ভান মাত্রে

1
@ জোনাথনভান মাত্রে, অপেক্ষা করুন, গিটহাবের সংগ্রহস্থলগুলির একটি আকার সীমা আছে?
হাইকাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.