Найти - Пользователи
Полная версия: аплодер файлов
Начало » Network » аплодер файлов
1
boris_blade
Всем привет.
Пробую себя в написании аплодера файлов на 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()
Соответственно скрипт вывод хтмл код сайта, а хотелось бы чтобы выводил линк на загруженный файл.
Подскажите, пожалуйста, куда дальше копать и что делать.
Ferroman
Парсить результат вытягивая то что нужно.
Рекомендую использовать wireshark для просмотра что там по http реально бегает.
jartasa
Или плагин для firefox Httpliveheaders он удобнее и меньше весит,если только http снифать.
poltergeist
Вы пытаетесь с помощью urlencode файлы кодировать в параметры строки запроса и заливать это всё на сервер методом GET? Тут снифать ничего не нужно…

Литература: http://tools.ietf.org/html/rfc2388
Готовых средств в питоне пока нет, но есть разного качества рецепты: http://code.activestate.com/recipes/146306/
И вот это: http://atlee.ca/software/poster/poster.encode.html
poltergeist
Я немного соврал (в том смысле, что готовых средств в питоне нет), но совсем немного:) Есть способ заэнкодить данные для аплоада файлов стандартными библиотеками, сам с этим сейчас начинаю работать, поэтому даже есть некоторый пример, который можно модифицировать под свои нужды (не идеал конечно, мне нужен был просто 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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB