Pywikipedia 로그인 버그 해결

(Pywikipediabot 로그인 버그에서 넘어옴)

1 문제상황[ | ]

pywikipedia bot login bug, autologin does not working
미디어위키봇 로그인 버그 해결, 미디어위키봇 로그인 자동화
  • 미디어위키 봇 설치 참고
  • python login.py 으로 로그인을 한 후 쿠키 정보 파일이 생성되었음에도 자동로그인이 안되는 현상
[root@zetawiki pywikipedia]# python login.py -pass:P@ssw0rd
Logging in to Jmnote:ko as Jmnote_bot via API.
Should be logged in now
→ 로그인 직후에 "Should be logged in now→ 지금 로그인해야 한다."라고 하는 것부터가 수상하다.
[root@zetawiki pywikipedia]# ll ./login-data
total 12
-rw-r--r-- 1 root root 162 Jul 22 01:24 Jmnote-ko-Jmnote bot-login.data
-rw-r--r-- 1 root root 162 Jul 22 01:24 Jmnote-ko-None-login.data
-rw-r--r-- 1 root root 161 Apr 14 12:58 README
→ 로그인 쿠키 정보 파일이 생성되었다.
[root@zetawiki pywikipedia]# python login.py -test
You are not logged in on Jmnote:ko.
→ 그런데 결국 로그인이 안된 상태이다.

이 상태로 다른 .py 스크립트를 실행하면 자동로그인이 되지 않아 패스워드를 수동으로 입력해야 한다. 결국 자동화를 위한 봇이 자동으로 작동하지 않게 된다. ㅠㅠ

2 해결방법[ | ]

  • 정확한 원인은 알 수 없으나 수동로그인 성공시에 생성한 쿠키 정보를 제대로 활용하지 못하고 있다.
  • 아래 예시와 같이 user-config.py 파일에 설정을 추가하고 패스워드 파일을 생성하여 해결하자.
user-config.py 파일에서 직접 패스워드를 읽어들이도록 할 수는 없고, 다른 파일(예: Jmnote.secret)을 참조하도록 할 수는 있다.
[root@zetawiki pywikipedia]# cat user-config.py
mylang='ko'
family='Jmnote'
usernames['Jmnote']['ko']='Jmnote_bot'
password_file='./login-data/Jmnote.secret'
[root@zetawiki pywikipedia]# cat ./login-data/Jmnote.secret
("Jmnote_bot","P@ssw0rd")

3 적용 후 테스트[ | ]

위와 같이 적용한 다음에는 .py 스크립트들을 수동로그인 절차 없이 자동으로 수행시킬 수 있다.

[root@zetawiki pywikipedia]# python redirect.py double -always -log
Retrieving special page...
Retrieved 5 redirects from special page.

>>> Pywikipediabot 로그인 버그 <<<
   Links to: [[미디어위키 봇 로그인 버그]].
   Links to: [[미디어위키봇 로그인 버그]].
   Links to: [[Pywikipedia bot 로그인 버그]].
- #넘겨주기 [[미디어위키 봇 로그인 버그]]
+ #넘겨주기 [[Pywikipedia bot 로그인 버그]]

Logging in to Jmnote:ko as Jmnote_bot via API.
Should be logged in now
Updating page [[Pywikipediabot 로그인 버그]] via API

>>> 미디어위키봇 설치 <<<
   Links to: [[미디어위키 봇 설치]].
   Links to: [[미디어위키 봇 설치하기]].
- #넘겨주기 [[미디어위키 봇 설치]]
+ #넘겨주기 [[미디어위키 봇 설치하기]]

Sleeping for 4.8 seconds, 2013-07-22 02:06:54
Updating page [[미디어위키봇 설치]] via API
... (생략)
→ 여전히 "Should be logged in now"라는 수상한 메시지가 나오기는 하지만, 패스워드를 물어보지 않고 자동으로 진행된다.

4 crontab 설정 및 로그[ | ]

아래 예시와 같이 crontab을 설정하여 주기적으로 자동수행되도록 하자.

[root@zetawiki pywikipedia]# crontab -l | grep python
35 * * * * python /root/pywikipedia/redirect.py double -always -log
→ 매시 35분마다 이중넘겨주기 수정봇이 작동한다.

수행로그는 pywikipedia/logs 폴더의 redirect.log를 확인하면 된다.

[root@zetawiki pywikipedia]# cat ./logs/redirect.log 
... (생략)
>>> �{lightpurple}미디어위키 봇 로그인 버그�{default} <<<
2013-07-22 02:21:09        redirect.py,  599 in fix_1_double_redirect: INFO        Links to: [[Pywikipedia bot 로그인 버그]].
2013-07-22 02:21:11        redirect.py,  599 in fix_1_double_redirect: INFO        Links to: [[Pywikipediabot 로그인 버그 해결]].
2013-07-22 02:21:13         support.py,  190 in           showDiff: INFO     �{lightred}-�{default} #넘겨주기 [[Pywikipedia�{lightred} b�{default}ot 로그인 버그]]
�{lightgreen}+�{default} #넘겨주기 [[Pywikipediabot 로그인 버그�{lightgreen} 해결]�{default}]
... (생략)

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}