Skip to content

Instantly share code, notes, and snippets.

@pbasov
Last active December 20, 2015 08:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pbasov/6097861 to your computer and use it in GitHub Desktop.
Save pbasov/6097861 to your computer and use it in GitHub Desktop.
import requests
r = requests.session()
empinfo = {'color':'#000000','usr_id':'0',
'login':'placeholder','password':'passw','password1':'passw',
'sname':'surname','fname':'firstname','pname':'middlename',
'bdate_dd':'01','bdate_mm':'01','bdate_yy':'1970',
'ref_id':'0','dept':'','tasks':'',
'phone_i':'','phone_e':'','email_e':'',
'ho_text':'','sh_text':'',
'pos':'position','res_id':'0',
'sdate_dd':'01','sdate_mm':'07','sdate_yy':'2013',
'alt':'','grp_id':'0','enable':'1'}
r.post('http://requestb.in/1dpgypo1', files=empinfo)
#Result: http://requestb.in/1dpgypo1?inspect#1c2ogn
#Notice the unwanted filename and Content-Type statements.
#Content-Disposition: form-data; name="enable"; filename="enable"
#Content-Type: application/octet-stream
#...
import requests
from urllib3.filepost import encode_multipart_formdata
r = requests.session()
empinfo = {'color':'#000000','usr_id':'0',
'login':'placeholder','password':'passw','password1':'passw',
'sname':'surname','fname':'firstname','pname':'middlename',
'bdate_dd':'01','bdate_mm':'01','bdate_yy':'1970',
'ref_id':'0','dept':'','tasks':'',
'phone_i':'','phone_e':'','email_e':'',
'ho_text':'','sh_text':'',
'pos':'position','res_id':'0',
'sdate_dd':'01','sdate_mm':'07','sdate_yy':'2013',
'alt':'','grp_id':'0','enable':'1'}
#let's encode this shit ourselves
fdata = encode_multipart_formdata(empinfo)
header = {'content-type':fdata[1]}
r.post('hhttp://requestb.in/1dpgypo1?inspect', data=fdata[0], headers=header)
#fdata[0] is a binary string
#Result:http://requestb.in/1dpgypo1?inspect#sq02ui
#Everything is cool, it would work, except the header has
#Content-Type: application/x-www-form-urlencoded, multipart/form-data; boundary=....random
#And trying to set empty files={} doesn't work either, it still pushes application/x-www-form-urlencoded.
import requests
from urllib3.filepost import encode_multipart_formdata
r = requests.session()
empinfo = {'color':'#000000','usr_id':'0',
'login':'placeholder','password':'passw','password1':'passw',
'sname':'surname','fname':'firstname','pname':'middlename',
'bdate_dd':'01','bdate_mm':'01','bdate_yy':'1970',
'ref_id':'0','dept':'','tasks':'',
'phone_i':'','phone_e':'','email_e':'',
'ho_text':'','sh_text':'',
'pos':'position','res_id':'0',
'sdate_dd':'01','sdate_mm':'07','sdate_yy':'2013',
'alt':'','grp_id':'0','enable':'1'}
#let's encode this shit ourselves
fdata = encode_multipart_formdata(empinfo)
prepped = requests.Request('POST', 'http://requestb.in/1dpgypo1', data=fdata[0]).prepare()
prepped.headers['Content-Type'] = fdata[1]
resp = r.send(prepped)
print(resp.text)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment