Форум сайта python.su
Хочу для одного форума настроить автоматический постинг.
Вот что проснифил в отправляемом браузером сообщении (без заголовеов):
-----------------------------37827316415720266761686078786 Content-Disposition: form-data; name="editId" -----------------------------37827316415720266761686078786 Content-Disposition: form-data; name="parentid" 0 -----------------------------37827316415720266761686078786 Content-Disposition: form-data; name="topicid" 1822066 -----------------------------37827316415720266761686078786 Content-Disposition: form-data; name="userId" 16856 -----------------------------37827316415720266761686078786 Content-Disposition: form-data; name="title" 0 -----------------------------37827316415720266761686078786 Content-Disposition: form-data; name="message" *[s2_246.gif]* -----------------------------37827316415720266761686078786--
Офлайн
http://www.google.com/search?q=python+%22requests%22+multipart+post
http://stackoverflow.com/questions/12385179/how-to-send-a-multipart-form-data-with-requests-in-python
Вообще, конечно, по-дурацки сделано. Надо было это указать явно.
Офлайн
Спасибо за ссылку
odnochlenОчень приятно, так как этот вопрос на stackoverflow тоже я задал.
http://stackoverflow.com/questions/12385179/how-to-send-a-multipart-form-data-with-requests-in-python
Офлайн
Когда формирую запрос таким способом
tt = secondby_bot.post(urlbase[:-1] + topicidlink, files=dict(editId='', parentid='0', topicid=topicid, userId=userid, title='0', message='*[s2_246.gif]* '))
Content-Type: multipart/form-data; boundary=cb17d41241624beabee5e3cb002e5e62....--cb17d41241624beabee5 e3cb002e5e62..Content-Disposition: form-data; name="topicid"; filename="topicid"..Content-Type: application/octet-stream....1822066..--cb17d41241624beabee5e3cb002e5e62..Conten t-Disposition: form-data; name="editId"; filename="editId"..Content-Type: application/octet-stream......--cb17d41241624beabee5e3cb002e5e62..Content-Disposition: form-data; nam e="parentid"; filename="parentid"..Content-Type: application/octet-stream....0..--cb17d41241624beabee5e3cb002e5e62..Content-Disposition: form-data; name="message"; filename="m essage"..Content-Type: application/octet-stream....*[s2_246.gif]* ..--cb17d41241624beabee5e3cb002e5e62..Content-Disposition: form-data; name="title"; filename="title"..Content -Type: application/octet-stream....0..--cb17d41241624beabee5e3cb002e5e62..Content-Disposition: form-data; name="userId"; filename="userId"..Content-Type: application/octet-str eam....16856..--cb17d41241624beabee5e3cb002e5e62
Офлайн
agryn, решили как-то вопрос? Тоже столкнулся с передачей multipart/form-data в requests и нигде немогу найти примера как правильно передать. Может у Вас найдутся заготовки?
P.S. для себя решил задачку таким способом: в data добавил словарь с данными для отправки в формы, и вставил пустой атрибут files, тогда отправляются multipart/form-data:
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests def main(): postdata = { "TopicTitle" : 'test', "TopicDesc" : 'test', "Post" : 'test' } headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0', 'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language' : 'en-US,en;q=0.5', 'Accept-Encoding' : 'gzip, deflate' } s = requests.Session() q = s.post('http://forum.com/index.php?', headers=headers, data=postdata, files={'':''}) if __name__ == '__main__': main()
Отредактировано omatic (Апрель 10, 2013 13:00:17)
Офлайн
Посмотрите на VirusTotal, там есть Public API с приемом файлов в multipart/form-data encoding. При этом надо пересылать токен. Вот так Я решил задачу через requests:
#-*- coding: utf-8 -*- import requests file_scan_url = "https://www.virustotal.com/vtapi/v2/file/scan" apikey = "--- ENTER YOUR API KEY ---" def scan_files(scan_url): files = [('file', ('sample.txt', open('sample.txt', 'rb'))), ('file', ('sample2.txt', open('sample2.txt', 'rb')))] return requests.post(scan_url, data={'apikey':apikey}, files=files)
(Pdb) resp = scan_files(file_scan_url) (Pdb) resp <Response [200]> (Pdb) resp.text u'{"scan_id": "27d2315007c22348f8296eea3e2c9398d113c6101382198bc72e5eff9d890754-1470328055", "sha1": "d35926bd15d15309464d773d258d2deb3de664d6", "resource": "27d2315007c22348f8296eea3e2c9398d113c6101382198bc72e5eff9d890754", "response_code": 1, "sha256": "27d2315007c22348f8296eea3e2c9398d113c6101382198bc72e5eff9d890754", "permalink": "https://www.virustotal.com/file/27d2315007c22348f8296eea3e2c9398d113c6101382198bc72e5eff9d890754/analysis/1470328055/", "md5": "7b9ea15294d153f42e30adff30cf503e", "verbose_msg": "Scan request successfully queued, come back later for the report"}'
Отредактировано Master_Sergius (Авг. 4, 2016 20:19:06)
Офлайн