2012-06-13 34 views
0

我想用機械化進行的multipart/form-data的一個POST請求,這裏是它看起來像Firefox的活HTTP頭當我真正做一個帖子:使用mechanize python提交multipart/form-data?

http://example.com/new/example 

POST /new/example HTTP/1.1 
Host: example.com 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Referer: http://example.com/new/example 
Cookie: tmgioct=c32MbAGn1sTuZrH8etPqVNU5; __qca=P0-495598852-1339139301054; __utma=189990958.911848588.1339139302.1339556345.1339561805.32; __utmz=189990958.1339139302.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); logged_in=1; tog_appearance_fieldset=fieldset_open; __utmc=189990958; pfu=42375294; pfp=h2YrFoaTr5LtrVys8PMmKNdyuoeA9FNLakxGzrJK; pfe=1371048319; __utmb=189990958.5.10.1339561805 
Content-Type: multipart/form-data; boundary=---------------------------41184676334 
Content-Length: 2947 
-----------------------------41184676334 
Content-Disposition: form-data; name="UPLOAD_IDENTIFIER" 

0ad3af1c502c7cb59577b01720ee58ff014810c4 
-----------------------------41184676334 
Content-Disposition: form-data; name="post[state]" 

2 
-----------------------------41184676334 
blahblahblahblah.... 

-----------------------------41184676334-- 

這裏是我的代碼:

browser = mechanize.Browser() 

url = "http://example.com/new/example" 
header = { 
    'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0', 
    'Referer': 'http://example.com/new/example', 
    'Content-Type': 'multipart/form-data; boundary=---------------------------41184676334' 
} 

data = "-----------------------------41184676334\rContent-Disposition: form-data; name="UPLOAD_IDENTIFIER"\r\r0ad3af1c502c7cb59577b01720ee58ff014810c4\r-----------------------------41184676334\rContent-Disposition: form-data; name="post[state]"\r\r2\r-----------------------------41184676334\rblahblahblahblah....\r\r-----------------------------41184676334--\r" 

req = urllib2.Request(url, data, header) 

response = browser.open(req, timeout = 30) 
response.close() 

我不知道爲什麼它不起作用。有人知道嗎?請幫助我。

順便說一下,它是否與邊界有關?我在上面的代碼中使用隨機數字。

回答

1

MIME media types RFC 2046

任何MIME「文本」的規範形式亞型必須始終代表一個 換行符作爲CRLF序列。

您的代碼僅使用回車符('\ r');您還需要添加換行符(\n)。

+0

我已經更換了所有'\ r'和'\ r \ N',它仍然無法正常工作,其他可能的原因是什麼? – Shane

+1

定義'不工作'。你試圖欺騙的網站不買它?可能該網站正在尋找的不僅僅是User-Agent和Referer標題,以確定是否使用「真正的瀏覽器」。 –

+0

是的,我想是的。它與邊界號碼有關嗎?我只是使用隨機生成的數字。 – Shane

0
browser.form.enctype = "application/x-www-form-urlencoded" 
相關問題