• 19446
  • 80
  • 12
Нравится блог?
Подписывайтесь!

Cross post на yVision

В день отлета из Алматы мне захотелось замутить кросс-постинг на yVision со своего блога. Я подумал, что было бы здорово если бы у
меня была, например, такая кнопочка

Попытки погуглить crossposting на yVision ничего не дали. И тогда я поискал что есть у Питона
по этой теме. Остановился я на ClientCookie, ClienForm библиотеках. В тот же день добился вот такого результата, с помошью которого я смог закинуть свой первый Test Post.

 

 

#coding: utf-8
import urllib2, cookielib
import ClientCookie
from ClientForm import *

YVI_LOGIN = "your login"
YVI_PASSWORD = "and password"
# если знаете можно указать ID своего логина
# но не обязательно.
YVI_USER_ID = None

# нам надо получить куки авторизации
request = ClientCookie.Request("http://yvision.kz/auth/")
response = ClientCookie.urlopen(request)

# парсим все формы, на страничке
forms = ParseResponse(response, backwards_compat=False)
# нам нужна вторая, первая это фома поиска
form = forms[1]

# заполняем форму, меням экшн. через аякс данный отправляются именно сюда
form.action = 'http://yvision.kz/ajax/auth/login.php'
form['login'] = YVI_LOGIN
form['password'] = YVI_PASSWORD
request = form.click()
# получили куки
response = ClientCookie.urlopen(request)

# теперь идем на нашу форму добавления поста
request = ClientCookie.Request('http://%s.yvision.kz/manage/article/add' % YVI_LOGIN)

# если надо подрелактировать существующий пост, тогда идем сюда
#POST_ID = 55019
#request = ClientCookie.Request('http://%s.yvision.kz/manage/article/edit/%s' % (YVI_LOGIN,POST_ID))

response = ClientCookie.urlopen(request)
# парсим все формы, на страничке
forms = ParseResponse(response, backwards_compat=False)
# нам нужна третяя, первая это фома поиска, вторая форма логаут
form = forms[2]

# заполняем форму, меням экшн. через аякс данный отправляются именно сюда
form.action = 'http://%s.yvision.kz/ajax/post/article.php?publicate=1' % YVI_LOGIN
form['blog_title'] = "Python-Yvi Crosspost Test"
form['blog_post'] = "<p>Python-Yvi Crosspost Test</p>"
form['blog_tags'] = "test,crosspost"
if YVI_USER_ID is not None:
    form.new_control('hidden','user-id',{'id':'user-id','value':YVI_USER_ID})
form.new_control('hidden','save',{'value':'Сохранить (останется скрытой)'})
form.new_control('hidden','saveexit',{'value':'Опубликовать'})

#form.controls.remove(form.find_control('publ'))
#request.add_header('X-Requested-With', 'XMLHttpRequest')
#request.add_header('X-Prototype-Version', '1.6.0.2')

# постим
request = form.click()
response = ClientCookie.urlopen(request)

 

 

потом начал прикручивать, это дело к своему блогу и тут у меня вышли проблемы с кодировкой.
когда пишешь на русском, выходит exception. И я не смог доделать эту фичу в тот же день.
Мы улeтели в анкару.

И вот сегодня на работе, добравшись до интернета решил снова покопаться.
очень долго сверлил гугл, надеясь нарваться на что-нибудь похожее.
В результате нашел... :) причина оказалось в беспанотовости urllib.quote_plus.
в общем я немного подредактировал ClientForm.py, и все заработало.

вот тут лежит архив c библиотеками и моей реализацией задачи

yvi_crosspost.tar.gz

ну вот. как-то так. вроде работает. :)

29 июня 2010, 20:01
767

Загрузка...
Loading...

Комментарии

а как же первое из семи правил?)
дык кросс-пост и копи-паст немножко разные вещи, а кросспост дохрена кем нарушается, один самых активных тот же таупорт.кз

на самом деле на правила давно все успешно забили к сожалению и администрация почти ничего не делает для их соблюдения
Поздравляю, ты нашел уязвимость ))) Или я чего-то не понимаю? Ты со своего домена высылаешь данные на юви через post и получаешь в ответ куку? )))
ну не уязвимость.. я как бы имитирую процесс от аутентификации до написания поста. вот если бы там где-то была captcha то не получилось бы.
Я так понимаю, что "имитация процесса аутентификации" - это тоже XSS. Разве нет? Почему я не могу просто так взять и отправить данные методом пост на сайт ВКонтакте.Ру и войти в систему со своего домена?

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

До каких пор чиновники будут игнорировать защиту детей?

До каких пор чиновники будут игнорировать защиту детей?

До каких пор Уполномоченный по правам ребенка, как институт во всем мире стоящий на страже жизни и прав детей, в нашей стране будет выполнять представительские функции?
AliyaSadyrbaeva
25 июля 2017 / 18:27
  • 10798
  • 6
Зачем эмигрировать в Россию? Лично я никогда не понимал этой странной мечты

Зачем эмигрировать в Россию? Лично я никогда не понимал этой странной мечты

Некоторые мои знакомые, мечтают уехать в Россию и побыстрее получить гражданство. Кому мы там сдались? Есть замечательная поговорка: "Где родился - там и пригодился".
Washington
25 июля 2017 / 12:15
Что происходит в казахстанской правоохранительной системе под видом борьбы с коррупцией

Что происходит в казахстанской правоохранительной системе под видом борьбы с коррупцией

За день до своей гибели прямо около памятника жертвам политических репрессий 1937-го Жампозов сказал жене, что он – жертва точно таких же репрессий.
openqazaqstan
24 июля 2017 / 10:18
  • 3437
  • 12
Если вам отвечают на казахском языке – ситуация с точки зрения законодательства

Если вам отвечают на казахском языке – ситуация с точки зрения законодательства

Я своим постом не собираюсь критиковать кого-либо, что люди знают или не знают казахский или русский язык. Я выражаю своё мнение с точки зрения законодательства о языках.
Advokot
25 июля 2017 / 13:50
  • 3264
  • 31
Мужчины Люксембурга и Казахстана: «У нас они уже в 35 добиваются статуса»

Мужчины Люксембурга и Казахстана: «У нас они уже в 35 добиваются статуса»

Что касается парней, так это вообще отдельная тема. Они для меня загадка. Уже год пытаюсь понять ход их мыслей. Для нас, казахов, немного сложно понять, почему человек в 35-36 лет, до сих пор не нашел смысла жизни.
AASh
24 июля 2017 / 15:19
  • 2367
  • 23
Легендарный вокалист «Linkin Park» унёс за собой молодость десятков тысяч людей

Легендарный вокалист «Linkin Park» унёс за собой молодость десятков тысяч людей

Самое грустное, что, как и всегда в таких случаях, скоро на Честера начнут изливаться потоки грязи - что он был наркоманом, или что-то подобное (как в случае со многими знаменитостями).
demonica
21 июля 2017 / 15:13
  • 2054
  • 51
Алматы глазами астанчанки: «У вас жара за 30! Вы не то, что южные – вы Африка!»

Алматы глазами астанчанки: «У вас жара за 30! Вы не то, что южные – вы Африка!»

Все дороги ведут в Алматы. Хотелось бы поспорить, учитывая, как я насмешливо провожала друзей или коллег, которые покидали родную Астанушечку и переезжали «на юг».
SogdiK
21 июля 2017 / 18:25
  • 1914
  • 34
Хан Ордасы – ставка Жангир-хана. Здесь была открыта первая в Казахстане типография

Хан Ордасы – ставка Жангир-хана. Здесь была открыта первая в Казахстане типография

Ханская ставка Жангир-хана в селе Хан Ордасы Бокейординского района Западно-Казахстанской области - это одно из самых интересных исторических мест Казахстана.
theYakov
26 июля 2017 / 5:34
  • 1482
  • 4
Королева пепла. Рекап 2 серии 7 сезона сериала «Игра престолов»

Королева пепла. Рекап 2 серии 7 сезона сериала «Игра престолов»

Всем привет! Продолжаем традиционную серию рекапов, посвящённых, пожалуй, главному сериалу современности - "Игре престолов". Спойлеры обязательны, иначе и быть не может!
Seattle
25 июля 2017 / 16:15
  • 1489
  • 22