自动执行文件上载故障排除

时间:2017-03-30 04:09:36

标签: python python-3.x python-requests

我尝试使用requests中的python3模块自动执行文件上传。我尝试复制的设置(我手动完成)如下:

  1. 我在网站上找到我的笔记(代码中为SUBMIT_URL)。

  2. 我被重定向到我大学的登录信息(代码中为LOGIN_URL)。

  3. 我登录我的帐户(使用我的用户名/密码,从credentials.py导入,因为我不想在此分享)。

  4. 我被重定向回提交网页。它有一个拖放文件的区域。我将文件拖到那里,然后提交。

  5. 这是整个过程,我的大部分都在工作。 我想要登录的文件托管服务名为moodle,它并没有真正的API,所以我一直试图这样做"手动&#34 ;。我确信登录工作正常,因为login_page_query.content会返回说“你已登录”的内容,但我们无法以任何理由重定向你"。 问题似乎在draft_query下面。

    draft_query正在尝试模仿chrome sends here的请求,我尝试使用DRAFT_FILES_PAYLOADsesskeyclient_iditemid似乎都是以某种方式动态生成服务器端的,但我能够通过{{1的正则表达式搜索获得看起来合理的东西}}。这通常看起来像this(默认情况下,所有这些都在一行上,因此链接本身可能不是最有用的。)

    所以,虽然我无法将submit_page.content /其他数据与chrome进行比较(因为每次加载页面时似乎都会发生变化),每次运行python时都会得到一些信息。格式与chrome相同,看似合理。

    我遇到的当前错误是sesskeydraft_query

    draft_query.content

    尽管b'{"error":"A required parameter (sesskey) was missing","errorcode":"missingparam","stacktrace":null,"debuginfo":null,"reproductionlink":null}'

    draft_files_payload

    显然包含<MultipartEncoder: (('sesskey', 'X6DD4DCAHC'), ('client_id', '58dc838805c18'), ('filepath', '/'), ('itemid', '288033100'))> 。作为旁注,我曾经将sesskey作为字典,但我担心订单可能很重要。但这根本没有帮助。

    另外需要注意的是,对于Chrome浏览器我尝试模拟的问题(使用draft_files_payload),内容类型是

    draft_files_query

    application/x-www-form-urlencoded; charset=UTF-8 默认为requests,因此我尝试将其设为标题。我不知道它是否起作用/产生了积极的影响。

    我不确定任何人都能帮助我的具体程度,因为我无法真正透露完成这项工作所需的证书。任何人都可以采取一般策略/解决我可以做的事情吗?我真的很不清楚自己在做什么,并且昨天获得了广泛的帮助(尽管现在我觉得我觉得我可以复制下面的内容了。)

    总结:

    当前错误:

    text/plain在复制this查询时失败,即使看起来我有正确的数据/格式。

    draft_query

1 个答案:

答案 0 :(得分:0)

尝试将其从Multipart编码器更改为简单词典。

draft_files_payload = {“ sesskey”:sess_key,“ client_id”:client_id,“ filepath”:“ /”,“ itemid”:item_id}