Használni kényszerülök egy weboldalt amit meg akarok pimpelni egy kicsit greasemonkey-al.
Az oldalon nem lehet a linkek tartalmát kidobálni új lapra mert JS-el van megoldva a link kezelése.
Én igazából nem is az új tabra dobálást szeretném megoldani, hanem ha megnyitom az oldalt ahol van egy táblázat amiben van n darab link akkor húzza le a háttérben a link targetet, szedje ki az infókat és tegye be a táblázat új oszlopaiba.
A linkek kezelése a következőképpen történik:
A linkek href-je:
href="javascript:__doPostBack('ucClaims$rptClaims$ctl01$lnkBttnClaimId','')"
A doPostBack:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
Az oldal használ jquery-t így ha a developer konzolban meghívom ezt:
$("input[name=__EVENTTARGET]").val("ucClaims$rptClaims$ctl01$lnkBttnClaimId");
$.ajax({
url : $('#form1').attr("action"),
data : $("#form1").serialize(),
type: 'post',
success : function (response) {console.log(response);}
});
Akkor szépen visszakapom az oldalt amit kívánok, fel tudom jquery-vel parsolni a visszaadott DOM-ot, meg tudom csinálni amit szeretnék.
Igenám de a Greasemonkey-ban nem lehet jquerys ajaxot használni, hanem van helyette GM.xmlHttpRequest.
Ezt így hívva:
var formField = "ucClaims$rptClaims$ctl" + stringId + "$lnkBttnClaimId";
$("input[name=__EVENTTARGET]").val(formField);
GM.xmlHttpRequest({
method: "POST",
url : $("#form1").attr("action"),
data : $("#form1").serialize(),
onload: function(response) {
console.log(response.response);
}
});
nem a link oldala jön be hanem az "index" oldal mintha úgy postoltam volna, hogy a data üres/nem megfelelő. (De nyilván ugyanazt adom át.)
A gondom az, hogy a GM.xmlHttpRequest nem jelenik meg a developer toolbar kérései között így nem igazán tudom összehasonlítani a két kérést. Az oldal csak https-en át érhető el, így a drótcápa most nem barátom :(
Van esetleg valakinek valamilyen ötlete, hogy mi lehet az eltérés a két kérés között, vagy hogyan lehetne ezt kideríteni?
Hozzászólások
Ha Firefoxot használsz: A ctrl-shift-j hatására előjövő, egész böngészőre vonatkozó böngészőkonzolban sem látszik a kérés?
Psszt, elárulom az IP-címemet: 192.168.0.14
Ott a pont, először azt hittem ez ekvivalens az F12-es developer toolbar nézetével, de nem, itt megvannak a grízmajmos requestek is.
Header baja volt, kellett egy
-t adni a GM.xmlHttpRequestnek:
Köszönöm a tippet!
Esetleg valami olyan proxy, ami HTTPS-t is tud? Legutóbb én az OWASP ZAP megfelelő funkciójával csináltam ilyesmit (az volt éppen kéznél). Színes-szagos tutorial pl. itt: Configuring OWASP ZAP Proxy To Trace Browser Traffic
hogyha az url-t beirnad kezzel es nem az actionbol venned ki ugy sem jo?
neked aztan fura humorod van...