python robobrowser触发器来自js(python robobrowser trigger post from js)

编程入门 行业动态 更新时间:2024-10-10 03:23:17
python robobrowser触发器来自js(python robobrowser trigger post from js)

首先,我登录到一个网站www.example.com/login,结果网站包含如下脚本:

<script type="text/javascript"> $(function () { if ($('#UserLocationGroup option').size() <= 1) { $('#UserLocationGroup').attr("disabled", "disabled"); } $('#UserLocationGroup').change(function () { var areYouSure = true; if ($('form').length > 0) { areYouSure = $('form').triggerHandler('navigateaway'); } if (areYouSure === false) { return; } $.post('/Users/set-role', $.extend({}, { id: $(this).val() }, aw.antiforgeryToken), function (data, textStatus, xhr) { console.log('redirecting..' + data.redirectUrl); }); }); }); $(document).ready(function () { if ($("#UserLocationGroup > option").length == 1) { $("#UserLocationGroup").css("background-image", "none"); } var usernameWithTrim = $('.js-tooltip-admin'); var usernameWithoutTrim = $('.js-tooltip-light-admin'); if (usernameWithoutTrim.width() <= usernameWithTrim.width()) { usernameWithoutTrim.hide(); } });

并有下拉菜单,其中包含option1 option2 option3,当选项被改变时,上面的js开始发送一个帖子到服务器(至少这就是我所理解的)

我如何从robobrowser模仿这篇文章?

我试过以下

browser=RoboBrowser() headers={'X-Requested-With': 'XMLHttpRequest','User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'} browser.session.headers.update(headers) print browser.response.headers data={'id':role,'__RequestVerificationToken':token} encoded_data=urllib.urlencode(data)

browser.session.request('POST',' https ://example.com/Users/set-role',encoded_data,headers)

而且这个失败没有细节错误,

谁能帮忙?

first of all, I log into a website www.example.com/login and the resulted website contains a script like following:

<script type="text/javascript"> $(function () { if ($('#UserLocationGroup option').size() <= 1) { $('#UserLocationGroup').attr("disabled", "disabled"); } $('#UserLocationGroup').change(function () { var areYouSure = true; if ($('form').length > 0) { areYouSure = $('form').triggerHandler('navigateaway'); } if (areYouSure === false) { return; } $.post('/Users/set-role', $.extend({}, { id: $(this).val() }, aw.antiforgeryToken), function (data, textStatus, xhr) { console.log('redirecting..' + data.redirectUrl); }); }); }); $(document).ready(function () { if ($("#UserLocationGroup > option").length == 1) { $("#UserLocationGroup").css("background-image", "none"); } var usernameWithTrim = $('.js-tooltip-admin'); var usernameWithoutTrim = $('.js-tooltip-light-admin'); if (usernameWithoutTrim.width() <= usernameWithTrim.width()) { usernameWithoutTrim.hide(); } });

and there is dropdown menu which contains option1 option2 option3, when options get changed, the above js start sending a post to server (at least that's what i understand)

how do i mimic this post from robobrowser?

i have tried following

browser=RoboBrowser() headers={'X-Requested-With': 'XMLHttpRequest','User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'} browser.session.headers.update(headers) print browser.response.headers data={'id':role,'__RequestVerificationToken':token} encoded_data=urllib.urlencode(data)

browser.session.request('POST','https://example.com/Users/set-role',encoded_data,headers)

and this failed with no details error,

can anyone help?

最满意答案

我想出了使用browser.session.post(网址,数据)现在的作品

i figured out using browser.session.post(url,data) works now

更多推荐

本文发布于:2023-07-30 14:28:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1338769.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:触发器   robobrowser   python   post   trigger

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!