2017-04-11 855 views
1

我试图创建简单的python代码,它将与9kw.eu captcha通信,通过它们的api https://www.9kw.eu/api.html#apisubmit-tab解决服务。基本上我发送base64编码的图像与一些键:值和响应来自服务器应该是这样的号码:58952554,但我只得到使用Python http请求获取<response [200]>而不是INT

<response[200]> 

这应该意味着服务器得到了我的数据,但林不得到其他的东西。 我能够用简单的HTML表单,以获得正确的结果:

<form method="post" action="https://www.9kw.eu/index.cgi" enctype="multipart/form-data"> 
KEY:<br> 
<input name="apikey" value="APIKEY"><br> 
ACTION<br> 
<input name="action" value="usercaptchaupload"><br> 
FILE:<br> 
<input name="file-upload-01" value="BASE64IMAGEDATAHERE"><br> 
TOOL<br> 
<input name="source" value="htmlskript"><br> 
ROTATE<br> 
<input name="rotate" value="1"><br> 
Angle<br> 
<input name="angle" value="40"><br> 
BASE64 
<input name="base64" value="1"><br> 
Upload:<br> 
<input type="submit" value="Upload and get ID"> 
</form> 

这是Python代码,它应该做同样的事情:

import requests 
import time 
#base64 image encoding 
with open("funcaptcha1.png", "rb") as f: 
    data = f.read() 
    filekodovany = data.encode("base64") 
    #captcha uploader 
udajepost = {'apikey':'APIKEY','action':'usercaptchaupload','file-upload-01':filekodovany,'source':'pythonator','rotate':'1','angle':'40','base64':'1'} 
headers = {'Content-Type':'multipart/form-data'} 
r = requests.post('https://www.9kw.eu/index.cgi', data = udajepost) 
print(r) 

感谢您的帮助。

+0

这是记录在主页上的第一个片段中的请求包(http://docs.python-requests.org/en/master/)。在旁注中,在未来的问题中,请尝试勾勒出您想要更清楚地实现的内容;一个'Request'对象具有很多属性,所有这些属性在各种情况下都可能有用。 – Jules

回答

5
r = requests.post('https://www.9kw.eu/index.cgi', data = udajepost) 

这里,r是具有许多属性的整个响应对象。我想,你只需要r.text。所以,你可以用:

print(r.text) 
2

您正在寻找的请求的响应:

print(r.text) 

这样你就会有明文响应。