ویکی‌پدیا:درخواست‌های ربات/بستن پروکسی باز

این ربات فقط با حساب کاربری مدیران قابل اجرا هست

این کد برای بستن پروکسی‌های باز کاربرد دارد و مدیران عزیز اگر می‌خواهید آن را اجرا کنید لطفاً از یکی از دیوانسالاران درخواست پرچم موقت برای حساب کاربریتان را بدهید تا ویرایش‌های ربات در تغییرات‌اخیر دیده نشود.

روش کار ویرایش

برای راه اندازی ربات کارهای زیر را انجام دهید.

  1. فهرست آی‌پی‌ها را در یک فایل متن با نام enBolckedPoxies.txt در کنار ربات قرار دهید به نحوی که هر آی‌پی در یک خط (بدون [[]]) باشد یا به کمک کوئری زیر فهرست آی‌پی‌های بسته شده را تهیه کنید.
  2. نام کاربری و پسورد خود را درون کد وارد نمائید.
  3. در صورتی که از کوئری تول‌سرور که در پائین موجود است، استفاده می‌کنید. نام youracount را به نام حساب کاربری خود در تول‌سرور تغییر دهید.
  4. کتابخانه userlib2.py را که امیر زحمت بومی‌سازی‌اش را کشیده‌است را در پوشهٔ پای‌ویکی‌پدیا (pywikipedia) خود کپی نمائید تا ربات بدون خطا کار کند.(بدون این کتابخانه به علت بسته بودن آی‌پی تول‌سرور در ویکی‌فا ربات با خطا مواجه می‌شود)

فهرست پرکسی باز ویرایش

به کمک کد اسکوئل زیر می‌توان این فهرست را از ویکی انگلیسی استخراج کرد.

SELECT
  ipb_address
FROM ipblocks
WHERE ipb_expiry > DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 YEAR),'%Y%m%d%H%i%s')
AND ipb_expiry != "infinity"
AND ipb_user = 0;

کد بالا را در فایل enBolckedPoxies.sql قرار دهید و کد زیر را در خط فرمان تول سرور بنویسید.(ترجیحا در screen چون اجرای این کوئری زمان‌بر هست)

sql enwiki_p < enBolckedPoxies.sql > /home/youracount/pywikipedia/proxylist.txt

نتیجه فایل proxylist.txt هست که در پوشه pywikipedia حساب کاربری شما کپی می‌شود توجه کنید که youracount همان نام کاربری شما در تول‌سرور هست.


برای اطلاعات بیشتر ویکی‌پدیا:استخراج آمار از دیتابیس تول سرور را مطالعه کنید.

ربات اجرا کنند ویرایش

  • ربات رضا هر ۶ ماه یک‌بار آی‌پی‌های باز را خواهد بست لطفا در صورتی که فهرست دیگری به جز ویکی انگلیسی دارید این کد را با حساب کاربری خود اجرا نمائید.

<syntaxhighlight lang="python">

  1. !/usr/bin/python
  2. -*- coding: utf-8 -*-
  3. Reza(User:reza1615), 2011
  4. Distributed under the terms of the CC-BY-SA 3.0 .
  5. it is only runs as sysop

import userlib2 import login import config,time import wikipedia,codecs wikipedia.config.put_throttle = 0 wikipedia.put_throttle.setDelay() def blockuser(user):

  site=wikipedia.getSite('fa')  
  reasons=u'ربات:بستن پروکسی باز'
  IP=userlib2.User(site,user)    
  #-----------log in as sysop---------------
  #badUser = userlib2.User(site=site, name="123.123.123.123")
  #badUser.block(expiry="2 hours", reason="did bad things", noCreate=True, onAutoblock=True, allowUsertalk=False)    
  IP.block(expiry=u'1 year',reason=reasons,anon=False,noCreate=True,onAutoblock=True,banMail=False, watchUser=False, allowUsertalk=True)
  wikipedia.output(u'\03{lightgreen}'+user+u' now is blocked\03{default}')    
      

def main():

   site=wikipedia.getSite('fa')
   text = codecs.open(u'proxylist.txt','r' ,'utf8')    
   text = text.read()
   text=text.replace(u'User:',u).replace(u'user:',u).replace(u'کاربر:',u).replace(u'',u'').replace(u'',u).replace(u'\r',u)
   IPs=text.split(u'\n')
   try:
      password_fa = open(wikipedia.config.datafilepath(config.password_file), 'r')
      password_fa=password_fa.read().replace('"',).strip()
      passwords=password_fa.split('(')[1].split(',')[1].split(')')[0].strip()
      usernames=password_fa.split('(')[1].split(',')[0].split(')')[0].strip()
   except:
      passwords=u'yourpass'
      usernames=u'yourusername'    
   #-------------------------------------------
   botlog=login.LoginManager(password=passwords,username=usernames,site=site,sysop=True)
   botlog.login()
   for IP in IPs:
      #try:
          if u"." in IP:
               blockuser(IP.split(u':')[0].strip())
               time.sleep(1)    
      #except:
           #wikipedia.output(u'\03{lightred}'+IP + u' is not valied IP\03{default}')    

if __name__ == '__main__':

       main()