ويكيبيديا:بوت/منع البروكسيات المفتوحة
بوت منع البروكسيات المفتوحة هو بوت مختص بالإداريين و يمكنهم إستخدامه ليستخرجوا قائمة البروكسيات المفتوحة ومن ثم يقوموا بمنعها. هذا الأجراء يتم بمرحلتين والمرحلة الأولي هي استخراج القائمة و المرحلة الثانية منع البروكسيات الموجودة في القائمة. للقيام بالمرحلة الأولي لابد علي الإداري ان يملك حساب علي التولسيرفر لكن المرحلة الثانية يمكن القيام بها من الجهاز الشخصي.
- في حال عدم إمتلاك الإداري لحساب علي التولسيرفر يمكنه أن يطلب هذا من أحد الزملاء الذين يملكون الحساب
- لإجراء هذا البوت عليك نسخ 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 وثم انقلوه الي ملفكم في التولسيرفر. لإستخراج قائمة البروكسيات اكتبوا الأمر (command) التالي
elph@willow:~/pywikipedia> sql enwiki_p < enBolckedPoxies.sql > /home/youracount/pywikipedia/enBolckedPoxies.txt_
بدلا من الـyouracount اكتب اسم حسابك علي التولسيرفر
نتيجه هذا العمل هو إنشاء ملف بأسم enBolckedPoxies.txt في مجلد pywikipedia
الكود
[عدل]#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Reza(User:reza1615), 2011
#
# Distributed under the terms of the CC-BY-SA 3.0 .
# 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('ar')
reasons=u'منع البروكسيات المفتوحة'
IP=userlib2.User(site,user)
#-----------log in as sysop---------------
IP.block(expiry=u'6 months',reason=reasons,noCreate=True,onAutoblock=True,anon=True)
wikipedia.output(u'\03{lightgreen}'+user+u' now is blocked\03{default}')
def main():
site=wikipedia.getSite('ar')
try:
text = codecs.open(u'/home/youracount/pywikipedia/enBolckedPoxies.txt','r' ,'utf8')#youacount is your acount name in toolserver
except:
text = codecs.open(u'enBolckedPoxies.txt','r' ,'utf8')
text = text.read()
text=text.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'your password'# كلمة السر
usernames=u'your Sysop name'#حساب المستخدم الإداري
#-------------------------------------------
botlog=login.LoginManager(password=passwords,username=usernames,site=site,sysop=True)
botlog.login()
for IP in IPs:
IP=IP.replace('[[','').replace(']]','').replace('user:','').replace('User:','').strip()
try:
if u"." in IP:
blockuser(IP)
time.sleep(1)
except:
wikipedia.output(u'\03{lightred}'+IP + u' is not valied IP\03{default}')
if __name__ == '__main__':
main()
تنبيه
لاتنسوا وضع sysopnames['wikipedia']['ar'] = u'your Sysop account' في ملف user-config.py