Имеется форум на сервисе MyBB, подающий большие надежды. Однако, стабильность сей платформы оставляет желать лучшего, ибо нормальная работа форума отмечается только в период с 20 до 13 часов GMT... Поэтому было принято решение запустить собственный форум на платном хостинге. Задача - перенести порядка 2.5 тыс. постов со старого форума но новый, осуществить это по-человечески невозможно постольку, поскольку владельцы MyBB отказываются делать дамп базы даже за деньги. Очевидно, единственный способ сделать копию - сохранить старый форум в HTML, разместить посты на новом от имени соответствующих пользователей, после чего выслать пользователям пароли к новому форуму.
О том, чтобы делать это вручную, не хочется даже думать... Возникла идея написать программу, которая могла бы соединиться с форумом вместо обозревателя и отправить несколько сообщений в нужную тему под надлежащим именем. Теперь собственно вопрос...
Для начала: форум довольно снисходительно отнёсся к небольшому хирургическому вмешательству, если более точно - к смене кодировки данных из формы с multipart-formdata на form-urlencoded. При размещении постов из обозревателя всё работает, однако обращения собственного клиента безрезультатны...
Как я понимаю, авторизация происходит путём создания cookie файла с идентификатором сессии и номером пользователя. И то, и другое можно получить в ответе сервера на запрос из формы авторизации.
Запрос:
Код: Выделить всё
POST /forum/ucp.php?mode=login HTTP/1.1
User-Agent: telnet
Host: localhost
Accept: text/html
Connection: Close
Content-Length: 44
Content-Type: application/x-www-form-urlencoded
username=Admin&password=adminpsw&login=LoginКод: Выделить всё
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 09:30:36 GMT
Server: Apache/2.0.59 (Win32) PHP/5.1.6
X-Powered-By: PHP/5.1.6
Set-Cookie: phpbb3_j72jd_u=1; expires=Tue, 12-Jun-2012 09:30:36 GMT; path=/; HttpOnly
Set-Cookie: phpbb3_j72jd_k=; expires=Tue, 12-Jun-2012 09:30:36 GMT; path=/; HttpOnly
Set-Cookie: phpbb3_j72jd_sid=f7a681d1c27ed6db069d8d3069474564; expires=Tue, 12-Jun-2012 09:30:36 GMT; path=/; HttpOnly
Set-Cookie: phpbb3_j72jd_u=[b]2[/b]; expires=Tue, 12-Jun-2012 09:30:36 GMT; path=/; HttpOnly
Set-Cookie: phpbb3_j72jd_k=; expires=Tue, 12-Jun-2012 09:30:36 GMT; path=/; HttpOnly
Set-Cookie: phpbb3_j72jd_sid=[b]7b548605a8aae6f57c198e3a28ec3eed[/b]; expires=Tue, 12-Jun-2012 09:30:36 GMT; path=/; HttpOnly
Cache-Control: private, no-cache="set-cookie"
Expires: 0
Pragma: no-cache- идентификаторы сессии всё время разные;
- почему их два? (вставляю в запрос на отправку поста второй, ибо он совпадает с идентификаторами в теле документа)
- разумеется, главная проблема: после запроса на размещение поста ничего не просходит...
Вот этот запрос:
Код: Выделить всё
POST /forum/posting.php?mode=reply&f=3&sid=[b]7b548605a8aae6f57c198e3a28ec3eed[/b]&t=2 HTTP/1.1
User-Agent: telnet
Host: localhost
Accept: text/html
Referer: http://localhost/forum/posting.php?mode=reply&f=3&t=2
Cookie: phpbb3_j72jd_u=2; phpbb3_j72jd_k=; phpbb3_j72jd_sid=[b]7b548605a8aae6f57c198e3a28ec3eed[/b]; style_cookie=A++
Connection: Close
Content-Length: 117
Content-Type: application/x-www-form-urlencoded
subject=Re%3A+Hello&message=Hello+again+people&topic_cur_post_id=7&post=Submit&attach_sig=on&creation_time=1307955615
