簡體   English   中英

在哪里找到變化的PHP POST數據

[英]Where to find a changing PHP POST data

我使用以下代碼登錄(使用最重要的部分進行了總結):

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_parameters);
$result = curl_exec($ch);
curl_close($ch);

為了知道我必須輸入什么$ post_parameters,當我在瀏覽器中手動登錄時,我使用了httpfox來分析HTTP流量。 POST數據顯示如下:

auth_key=880ea6a14ea49e853634fbdc5015a024&referer=http%3A%2F%2Fwww.website.net%2F&ips_username=myUsername&ips_password=myPassword

所以我只是在我的腳本上這樣做:

$post_parameters = "auth_key=".$authKey."&referer=".$referer."&ips_username=".$username."&ips_password=".$password;

我計划對模擬主題發布的功能執行相同的操作,但是我遇到的問題是,當我使用瀏覽器手動發布內容並分析流量以查找POST數據時,看起來就像登錄時那樣,它看起來像這樣:

-----------------------------20170174379164 // <-- Unknown number
Content-Disposition: form-data; name="st"

0
-----------------------------20170174379164
Content-Disposition: form-data; name="app"

forums
-----------------------------20170174379164
Content-Disposition: form-data; name="module"

post
-----------------------------20170174379164
Content-Disposition: form-data; name="section"

post
-----------------------------20170174379164
Content-Disposition: form-data; name="do"

new_post_do
-----------------------------20170174379164
Content-Disposition: form-data; name="s"

5124060eb013dfa845b1e6b67c3fbfa7 //Changing number which can be found on the previous source code
-----------------------------20170174379164
Content-Disposition: form-data; name="p"

0
-----------------------------20170174379164
Content-Disposition: form-data; name="t"
.
.
.

我要像在其他情況下一樣做,那就是這樣的:

$post_parameters = "-----------------------------$boundaryNumber
Content-Disposition: form-data; name="st"

0
-----------------------------$boundaryNumber
Content-Disposition: form-data; name="app"

forums
-----------------------------$boundaryNumber
Content-Disposition: form-data; name="module"

post
-----------------------------$boundaryNumber
Content-Disposition: form-data; name="section"

post
-----------------------------$boundaryNumber
Content-Disposition: form-data; name="do"

new_post_do
-----------------------------$boundaryNumber
Content-Disposition: form-data; name="s"

$changingNumber 
-----------------------------$boundaryNumber
Content-Disposition: form-data; name="p"

0
-----------------------------$boundaryNumber
Content-Disposition: form-data; name="t"
.
.
."

但是我有一個問題,我不知道邊界線上會出現什么數字,因此每次在代碼上出現$boundaryNumber我都可以放它。 有沒有辦法知道會出現什么數字? 如果沒有,我可以放置我想要的電話號碼還是必須是一個特定的電話號碼,以便POST能夠正常工作?

我希望這次我能更好地解釋自己。

有2個明顯的問題,您不必對數據進行urlencode,因此,如果數據包含&=或空格或ÆØÅ或其他字符,則會發送錯誤的數據。

第二個問題是您的curl代碼使用application/x-www-urlencoded編碼,但是您的瀏覽器在POST請求正文中使用multipart/form-data -encoding。

現在使用curl_,為了使用使用multipart/form-data -encoding,只需給CURLOPT_POSTFIELDS一個數組,curl將為您進行multipart/form-data -encode :)

$post_parameters = array (
        "auth_key" => $authKey,
        "referer" => $referer,
        "ips_username" => $username,
        "ips_password" => $password 
);

編輯:修復了一些代碼破譯錯誤,將其從urlencoded轉換為php數組時,在數組鍵名中具有=

關於邊界字符串的困惑,由您自己決定邊界字符串是什么。 通常,它只是一堆隨機字符。 它是multipart/form-data編碼的一部分...但是您不必擔心,因為curl會自動為您創建邊界字符串,並且您無需知道它的工作原理或含義。 ,curl會為您照顧好它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM