[megoldva]Greasemonkey GM_xmlHttpRequest POST vs. jquery ajax POST

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

application/x-www-form-urlencoded

-t adni a GM.xmlHttpRequestnek:

GM.xmlHttpRequest({
    method: "POST",
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    url : $("#form1").attr("action"),
    data : $("#form1").serialize(),
    onload: function(response) {
      var form = $(response.response.trim()).filter("form");
      var gridView = $(response.response.trim()).filter("form").find(responseGridViewId);
      var tdData = "";

Köszönöm a tippet!

Szerkesztve: 2021. 04. 13., k – 15:22

Az oldal csak https-en át érhető el, így a drótcápa most nem barátom

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...