none
submit button 沒有 name 屬性, 如何 Post 給 server? RRS feed

  • 問題

  • 參考過一些 google 內的文章, 似乎要用 js 去做, 但我用 webClient 或 webRequest 去 post 給 server 的話, 想不到怎樣才可達成。唯一只想到把整個 html 文件 load 入 webBrowser1, 然後 htmlElement a = doc.GetElementById("uz0j0n_18"); a.invokeMemeber("click");

    但這樣效能會很低, 步驟流程很麻煩。有什麼方法呢?

    以下是 Html code

    <form onsubmit="return Event.__inlineSubmit(this,event)" method="post" action="/ajax/updatestatus.php" class="attachmentForm" rel="async">

    <input type="text" id="t01">

    <input type="text" id="t02">

    <input type="submit" id="uz0j0n_18" value="發佈">

    </form>


    2011年10月21日 上午 10:28

所有回覆

  • 2011年10月21日 上午 11:57
  • 了解 HTTP POST 的原理,你就會知道怎麼做了。

    http://en.wikipedia.org/wiki/POST_(HTTP)


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    2011年10月21日 下午 12:21
    版主
  • 1. 你沒把回丟的過程用封包攔截側錄下來。

    2. 看到他的副檔名,很有可能是用 AJAX 去讀目前頁面上的 ID ,是 GET 還是 POST ,應該看他這個事件如何實作才對。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月21日 下午 12:54
  • 不妨參考這篇的做法。

    http://stackoverflow.com/questions/3372551/asp-net-html-input-button-value-on-postback

     


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年10月21日 下午 03:15
  • 最有可能的一個 capture, 但我打的是中文+英文字的 message, 但找不多任何我 post 的數據, 只有一個 __a=1

    facebook 真是幾大挑戰, 它除了 facebook logo 那一條 row 外, 所有表格, 內容, div 都是由 ajax + javascript realtime 產生... 所以幾難搞

    - Http: Request, POST /ajax/updatestatus.php, Query:__a=1
        Command: POST
      - URI: /ajax/updatestatus.php?__a=1
         Location: /ajax/updatestatus.php
       - Parameters: 0x1
          __a: 1
        ProtocolVersion: HTTP/1.1
        Accept:  */*
        Accept-Language:  zh-hk
        x-svn-rev:  461249
      - ContentType:  application/x-www-form-urlencoded
         MediaType:  application/x-www-form-urlencoded
        Accept-Encoding:  gzip, deflate
        UserAgent:  Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Foxy/1; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; yie8)
        Host:  www.facebook.com
        ContentLength:  600
        Connection:  Keep-Alive
        Cache-Control:  no-cache
      - Cookie:  x-referer=http%3A%2F%2Fwww.facebook.com%2Fprofile.php%3Fid%3D100003068238674%26sk%3Dwall%23%2Fprofile.php%3Fid

          p: 202
          act: 131921456812%2F16
          c_user: 100045662238674
          sct: 1319564587
          xs: 61%3A66456de8e14865456134b3e7d05e8f4
          presence: EM319210627L202REp_456
          locale: zh_HK
          _e_J7y8_14:       x-src: %2Fajax%2Fupdatestatus.php%7Cprofile_stream_composer    HeaderEnd: CRLF
      - payload: HttpContentType =  application/x-www-form-urlencoded
         post_form_id: 95439a7af90810aec6e8bd87649089e0
         fb_dtsg: AQDw


    • 已編輯 asp.coder 2011年10月21日 下午 03:52
    2011年10月21日 下午 03:51
  • 這邊看起來只有 Http Header ,沒看到 Http Body 。

    不要把 http Header / Body 當成 html Header / Body


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月22日 上午 08:33
  • 用 ms network monitor 看不到, 用 Wireshark 就看到了 post 的內容, 但始終找不到 facebook 用什麼方法把 data post 上去, 看似 /ajax/updatestatus.php?__a=1 , 但無法成功。而整個網頁用 javascript 控制, 包括 HTML 也是用 js 產生
     (做 facebook 的程式員真慘...), 然後分 "phrase" 逐步動態產生網頁, 所以很難找出它用什麼方法 post data, 也很難找出它的 name 對應的是 server 的什麼變數, 因為先要找出其 invoke 的 js function 才可透過 webbrowser1 invoke 它。

    有沒有更好的方法應付這種 js 造的網頁?


    • 已編輯 asp.coder 2011年10月22日 下午 05:45
    2011年10月22日 下午 05:41
  • 用 ms network monitor 看不到

    在 network monitor , 你要看 POST 後面那幾條 TCP capture 的 payload , 才看的到 post data.

    POST 那一條只有講 head.

    可以來個示範頁面網址, 講講你要做什麼嗎 ??

    要不試試 fiddler 吧

    2011年10月22日 下午 11:49
  • Microsoft Network Monitor 可以設定過濾規則,所以可以只顯示 本機 與該網站的來回封包,就不會那麼難找。

     

    本來網頁透過這些方法設計時,就有防止機器人存取的意味在。

    而破解他人的防止程序時,已經不屬於善意程式,在微軟官方論壇是不能討論的,最多就是容許討論一般邏輯與流程。

     

    一開始給你參考的討論連結裡面也有提到,請把 RFC 2616 看一看吧,從看通訊協定的過程中,你可以去想到如何防禦,來降低被機器人存取的機會。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月23日 上午 02:53
  • 其實我不是想破解 facebook, 其實亦沒有什麼可破解。我研究用 httpWebRequest 去做 automation 係因為有很多辦公室流程要用到人手輸入很多數據, 而這些數據早已在 excel / access 內, 但要用人手輸入第 3 方網站, 例如由客戶提供的資料 (excel), 再要人手輸入那件貨品要上那個供應商的網站, 這些動輒可能有數百條東西, filtering 又複雜, 要一個人整天坐著輸入, 又可能輸入錯。但不是每個供應商提供 API 給我們設定程式, 所以要試一些複雓的網站來試到底可能遇到的問題

     

    而 facebook 真是一個大挑戰... 如果遇著一個這樣的網站, 相信會是相當麻煩, 可能被迫要用 webbrowser 模擬整個 clicking 的過程! httpWebRequest 可能未必用得上。以你的經驗, facebook 算不算是麻煩的網站? 還是有更複雜的網站令 httpwebrequest 無法正常運作?


    • 已編輯 asp.coder 2011年10月24日 下午 12:24
    2011年10月24日 上午 11:41
  • 用 ms network monitor 看不到

    在 network monitor , 你要看 POST 後面那幾條 TCP capture 的 payload , 才看的到 post data.

    POST 那一條只有講 head.

    可以來個示範頁面網址, 講講你要做什麼嗎 ??

    要不試試 fiddler 吧


    如果你有 facebook account, 可試試如何 update 自己的 wall (不用 facebook API 下)
    2011年10月24日 上午 11:43
  • 先念 RFC 2616 ,然後自己開一個網頁來給自己測,你就會掌握流程。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月24日 下午 01:08
  • 今天又發現另一問題, 原來透過 webbrowser1 是不能讀取/寫入用 javascript 加入的 elements.

    現在沒有辦法模擬 click 等動作。因為會出現 object null 的問題 (因為根本讀不到該 element)

    請問還有沒有辦法? 

    2011年10月26日 下午 01:07
  • 要等該 script 執行完後才能讀。

    所以要考慮到時間差。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月26日 下午 02:31
  • 如果 focus 在 server side 而不是 client side, 會不會有突破呢 ?

    抓封包看看當你按下傳送時(先不管是不是有 name), 封包裡抓到關於 post 的部分, 參數共那些,

    照抄一遍參數, 然後對 server 做 post 的動作, 是否可成功呢 ?

     

    因為你用 webbrowser , 你一直想模仿 IE 做什麼, 你跟著做什麼,

    為什麼不試試, IE 最後 post 什麼, 你用 httprequest 照著 post 一遍

    你覺得這樣可行嗎 ??

    (如果我講錯了??!! 大家一起討論吧 !!)

     

     

    2011年10月30日 下午 03:03
  • 今天又發現另一問題, 原來透過 webbrowser1 是不能讀取/寫入用 javascript 加入的 elements.

    現在沒有辦法模擬 click 等動作。因為會出現 object null 的問題 (因為根本讀不到該 element)

    請問還有沒有辦法? 


    看來這個「原來」又是一個一知半解的誤會.
    2011年10月30日 下午 03:23
  • 如果 focus 在 server side 而不是 client side, 會不會有突破呢 ?

    抓封包看看當你按下傳送時(先不管是不是有 name), 封包裡抓到關於 post 的部分, 參數共那些,

    照抄一遍參數, 然後對 server 做 post 的動作, 是否可成功呢 ?

     

    因為你用 webbrowser , 你一直想模仿 IE 做什麼, 你跟著做什麼,

    為什麼不試試, IE 最後 post 什麼, 你用 httprequest 照著 post 一遍

    你覺得這樣可行嗎 ??

    (如果我講錯了??!! 大家一起討論吧 !!)

     

     


    本來這是是個好辦法, 但該網頁有很多 hidden field, 而每次 value 也不同, 似是用一些演算法計出來, 如果不用 webbrowser1  去執行 javascript,  似乎沒辦法得知而造成提交錯誤..

    心冷熱情熄 兄說要讓 script 執行完後, 才可 invoke 該些 element, 我還沒法做到

    2011年10月30日 下午 04:05
  • 你在自己程式控制之前,該 WebBrowser Control 是否能正確執行該網頁?如果有特別擋機器人,你的執行個體本身就未必能正常跑了。

    先自己寫個簡單的 POST 網頁,確認在沒特別擋的情況下你的程式碼是否能正常跑,可以的話就是對方有特別做反機器人功能,反機器人功能部份,只能靠封包解析,去猜對方用了哪些功能反制而已。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月30日 下午 04:57
  • 我在其他網上傳數據是沒有問題的, 完全可正常運作, 但用 javascript 產生的 html element, webbrowser1 根本找不到, 問題是找不到 element, 根本無法取得該些 element field 內的 values... 我懷疑不是 script 未 load 妥, 而是 webbrowser1 根本沒法對應 js 所產生的 html element.

    我試著自己做個 js 產生 element 的網頁試試看, 遲些再看結果如何!

     

     


    • 已編輯 asp.coder 2011年10月30日 下午 05:57
    2011年10月30日 下午 05:55
  • 不用官方的 API 做事,就是一種破解的嘗試。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    2011年10月31日 上午 03:40
    版主
  • 不用官方的 API 做事,就是一種破解的嘗試。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure

    都不可這樣說, 要看心態是什麼。我舉一個例, 某銀行的外滙交叉報價, 出現了 USD0.01 美元的偏差, 如果它沒有提供 API, 用人手落盤, 每分鐘只可做 20 條交易, 但用電腦, 可以做 100 條 (假設), 這樣不算破解吧。股票交易亦然, 很多銀行沒有提供 API, 我在網上和一個程式員交談過, 他說玩在用 VBA 做一了個程式, 監控很多股價, 然後經他設計的邏輯計算過後, 自動經網頁頁 (模擬) 落盤。

    在流水工業運作, 又是同一道理, 佷多輸入動作也不用人手, 可餘下其他時間做人應有的東西 (如休息)

    2011年10月31日 下午 01:08
  • 基本上,如果不是使用官方的 API 存取,都是透過不正常路徑,如果官方認為你是惡意,那你基本上就構成犯罪了。
    香港我不知道 (抱歉,我不知你是哪裡人),但台灣的刑法有妨害電腦使用罪章,刑法第三百五十八條是這麼寫的:

    無故輸入他人帳號密碼、破解使用電腦之保護措施或利用電腦系統之漏洞,而入侵他人之電腦或其相關設備者,處三年以下有期徒刑、拘役或科或併科十萬元以下罰金。

    是否是入侵行為,不是你或我說了就算,只是若官方告你的話,你只能想辦法說服法官說你沒有這個意思,但是基於你前一樓的說法,我想法官很難認定你不是惡意。

    至於你說的那個程式員的 VBA 程式,台灣也不少人在做,但他們的資料來源是公開環境 (ex: Yahoo Stock),鮮少是要透過登入,就算是要登入,也不會拿出來在枱面上講,除非你和他交情匪淺... 

    如果網頁本身有保護,你想要攻破那層保護,就是破解的嘗試,這個定義我個人認為是沒有問題的。

    參考:http://law.moj.gov.tw/LawClass/LawSingle.aspx?Pcode=C0000001&FLNO=358


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure

    2011年10月31日 下午 01:48
    版主
  • 可能台灣較嚴謹吧。在香港很多人日日在問, 如何把賽馬會的資料拿來, 自己作計算, 然後下注。至於股票, 更是常見, 而且該程式員是透過即時報價 (不是 yahoo), 用 DDE 連入 Excel , 再連入銀行網頁作自動交易, 我從來沒想過這會與犯罪扯上關連, 當然是操作自己的戶口吧!
    2011年10月31日 下午 02:46
  • 在台灣這種問題要到民間論壇 hacker 版去討論。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月31日 下午 02:49
  • 請問一下關於 wireshark的  data post 教程嗎??
    不知道是我把他想的太複雜還是...我沒看懂
    網路上有找到很多沒錯
    例如這個
    http://blog.shaolin.tw/2008/03/wireshark.html
    這是嗎?


    <form submit="return Event.__inlineSubmit(this,event)......."/>
    關於這部分我也有遇到也找不到方法,他return後的值都是null,請問有什麼方法嗎??

    2013年8月8日 上午 12:08