Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 28, 2009 19:10:11

boris_blade
От:
Зарегистрирован: 2009-09-28
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

аплодер файлов

Всем привет.
Пробую себя в написании аплодера файлов на rghost
И вот дальше этого кода мысль встала

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib
import urllib2

data= {}
data['authenticity_token'] = 'joCl96XEXhfW2AU54TrblablablaNieWixd7MfUpPgB1nZViA='
data['file'] = open('/home/user/scripts/toonel.jar')
url_values = urllib.urlencode(data)

url = 'http://phonon.rghost.ru/files'
full_url = url + '?' + url_values

headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'}
data=urllib2.urlopen(full_url)

thepage = data.read()
Соответственно скрипт вывод хтмл код сайта, а хотелось бы чтобы выводил линк на загруженный файл.
Подскажите, пожалуйста, куда дальше копать и что делать.



Офлайн

#2 Сен. 28, 2009 21:11:09

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

аплодер файлов

Парсить результат вытягивая то что нужно.
Рекомендую использовать wireshark для просмотра что там по http реально бегает.

Офлайн

#3 Сен. 28, 2009 21:43:55

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

аплодер файлов

Или плагин для firefox Httpliveheaders он удобнее и меньше весит,если только http снифать.



Офлайн

#4 Сен. 28, 2009 23:56:13

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

аплодер файлов

Вы пытаетесь с помощью urlencode файлы кодировать в параметры строки запроса и заливать это всё на сервер методом GET? Тут снифать ничего не нужно…

Литература: http://tools.ietf.org/html/rfc2388
Готовых средств в питоне пока нет, но есть разного качества рецепты: http://code.activestate.com/recipes/146306/
И вот это: http://atlee.ca/software/poster/poster.encode.html



Отредактировано (Сен. 29, 2009 00:48:27)

Офлайн

#5 Окт. 2, 2009 22:40:07

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

аплодер файлов

Я немного соврал (в том смысле, что готовых средств в питоне нет), но совсем немного:) Есть способ заэнкодить данные для аплоада файлов стандартными библиотеками, сам с этим сейчас начинаю работать, поэтому даже есть некоторый пример, который можно модифицировать под свои нужды (не идеал конечно, мне нужен был просто proof of concept для начала):

import os
from email import encoders
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart


FILE = '/home/user/scripts/toonel.jar'

msg = MIMEMultipart(_subtype='form-data')

part = MIMEText('joCl96XEXhfW2AU54TrblablablaNieWixd7MfUpPgB1nZViA=')
part.add_header('Content-Disposition', 'form-data', name='authenticity_token')
msg.attach(part)

# attaching file to the message
name, file_name, stream = 'file', os.path.basename(FILE), open(FILE, 'rb')
part = MIMEBase('application', 'octet-stream')
part.add_header('Content-Disposition', 'form-data', name=name,
filename=file_name)
part.set_payload(stream.read())
encoders.encode_base64(part)
msg.attach(part)
# msg._write_headers is a headers writer handler, we don't want to output
# headers with the body, so we are doing None here
msg._write_headers = lambda self: None
# at first we should get the body of the message and only afterwards we are
# getting headers with "boundary" in Content-Type header. This header is
# generated after message body building from given parts.
body = '\r\n'.join(msg.as_string().splitlines()) + '\r\n'
headers = dict(msg)


import urllib2
request = urllib2.Request('http://localhost:8000/', body, headers)
urllib2.urlopen(request)



Отредактировано (Окт. 3, 2009 09:15:14)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version