首先,我登录到一个网站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
更多推荐
发布评论