
16.02.2010, 05:00
|
|
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме: 1410429
Репутация:
214
|
|
Да простит меня Gifts, но я продолжу ковырять эту тему.
Никак не могу догнать в каком же все-таки запросе посылаеться содержимое файла.
Вот дамп пакета, как это делает ФФ:

Вот как делаю я (ruby):
Код:
Class Account
...
def create(uri, pars)
post = Net::HTTP::Post.new(uri.path)
boundary = (rand*1000000000).to_i.to_s
post.set_content_type("multipart/form-data", {:boundary => boundary})
body = ""
pars.each do |key, value|
body << "--#{boundary}\r\n"
append_post_parameter(body, key, value)
end
body << "--#{boundary}--"
post.content_length = body.length
post.body = body
return post
end
def append_post_parameter(body, key, value)
if value.class == File
body << "Content-disposition: form-data; name=\"#{key}\";\
filename=\"#{File.basename(value.path)}\"\r\n"
body << "Content-type: multipart/form-data;\r\n"
body << "Cookie: remixlang=0; remixchk=5; remixsid=#{@cook}; remixclosed_tabs=0\r\n"
body << "User-agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)\r\n"
body << "Content-Transfer-Encoding: binary\r\n\r\n"
body << value.binmode.read
body << "\r\n"
else
body << "Content-disposition: form-data; name=\"#{key}\"\r\n\r\n"
body << "#{value}\r\n"
end
end
def upload_ava()
#Тут идет какой-то предварительный запрос, не знаю его смысл, я просто повторил за браузером
@http=Net::HTTP.new('vk.com', 80)
path="/captchaFlood.php"
data="key=profile_photo_flood&item_id=1.....4"
resp, data = @http.post(path,data,self.get_headers)
#метод класса get_headers создает стандартный для запроса заголовок, с куками и прочей фигней
#######################
#Сам запрос
uri = URI.parse('http://vk.com/upload.php?act=profile&mid=1........4&hash=2..........74&rhash=a..........de&vk=1')
post = self.create(uri, { :file => File.open("1.jpg"), :another => "parameter" })
res = Net::HTTP.start("cs9651.vk.com", 80) do |http|
http.request(post)
end
end
end#class
acc=Account.new(login,pass)
acc.upload_ava
в результате res возвращает что-то типа
#<Net::HTTPOK:0xb803d410>
Security Breach2
и конечно ничего не работает
Последний раз редактировалось lukmus; 16.02.2010 в 05:07..
|
|
|