我想用捲曲填充表單,但此表單是在登錄後出現的面板頁面中的iframe中加載的。 我已經卷入了curl並獲取了面板頁面的內容,但是無法設置java篩選iframe以顯示post.aspx。 當我嘗試直接加載post.aspx我得到重定向。 在瀏覽器中,當我離開面板頁面打開並在新選項卡中打開post.aspx時,沒有任何直接操作可以免除。 我認爲這是方式。但是,當我發送一個curl到login.aspx並沒有關閉它之前捲曲post.aspx我怎麼能用curl來做到這一點? 我很抱歉英文寫作不好。打開secound捲曲像在新標籤中(firt一個保持打開狀態)
0
A
回答
0
由於它是一個ASP.net應用程序,很可能它會在您的登錄名中設置多個cookie,例如asp.net會話ID。您需要從初始登錄請求中獲取cookie值,並在每個新請求上發送這些值以保持登錄狀態。您還需要查看是否帖子頁面需要通過你提到的,在你捲曲的請求手動提供他們的JavaScript設置任何參數。
但是,它可能會更容易不使用捲曲爲此,轉而使用網絡驅動程序來運行瀏覽器做如phantomjs或腳本WebKit的實例爲你的請求。
0
我發現如何做到這一點,但出現了另一個問題。 這是可以打開post.aspx頁面,並保持面板頁面(Default.aspx的)開放的方式,這裏是我的代碼:
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_URL, "http://blogfa.com/Desktop/Login.aspx");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=".$viewstate."&__EVENTVALIDATION=".$eventvalidation."&master%24ContentPlaceHolder1%24Uid=".$user."&master%24ContentPlaceHolder1%24Password=".$pass."&master%24ContentPlaceHolder1%24btnSubmit=%D9%88%D8%B1%D9%88%D8%AF+%D8%A8%D9%87+%D8%A8%D8%AE%D8%B4+%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
$Cpanel = curl_exec($ch);;
preg_match_all('#<a href\="Post\.aspx\?t\=(.*?)" target#', $Cpanel, $seasonid);
$res = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, "http://blogfa.com/Desktop/Post.aspx?t=".$seasonid[1][0]);
curl_setopt($ch, CURLOPT_POST, 0);
$res = curl_exec($ch);
preg_match_all('#id="__VIEWSTATE" value="(.*?)" />#', $res, $poststate))
$postviewstate = urlencode($poststate[1][0]);
preg_match_all('#id="__EVENTVALIDATION" value="(.*?)" />#', $res, $postvalidation);
$posteventvalidation = urlencode($postvalidation[1][0]);
preg_match_all('#<input name="txtDay" type="text" value="(.*?)" maxlength="2" id="txtDay" title#', $res, $day);
preg_match_all('#<input name="txtMonth" type="text" value="(.*?)" maxlength="2" id="txtMonth"#', $res, $Month);
preg_match_all('#<input name="txtYear" type="text" value="(.*?)" maxlength="4" id="txtYear"#', $res, $Year);
preg_match_all('#<input name="txtMinute" type="text" value="(.*?)" maxlength="2" id="txtMinute"#', $res, $Minute);
preg_match_all('#<input name="txtHour" type="text" value="(.*?)" maxlength="2" id="txtHour"#', $res, $Hour);
// send post
$res = curl_exec($ch);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_URL, "http://blogfa.com/Desktop/Post.aspx?t=".$seasonid[1][0]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "__VIEWSTATE=".$postviewstate."&__EVENTVALIDATION=".$posteventvalidation."&hasextended=false&txtTitle=".$posttitle."&txtContent=".$postcontent."%3Cbr+%2F%3E%3Cp%3E%0D%0A%0D%0A%3C%2Fp%3E&txtExtended=&btnPublish=%D8%AB%D8%A8%D8%AA+%D9%85%D8%B7%D9%84%D8%A8+%D9%88+%D8%A8%D8%A7%D8%B2%D8%B3%D8%A7%D8%B2%DB%8C+%D9%88%D8%A8%D9%84%D8%A7%DA%AF&txtTags=".$posttags."&cmbCommentType=9&txtDay=".$day[1][0]."&txtMonth=".$Month[1][0]."&txtYear=".$Year[1][0]."&txtMinute=".$Minute[1][0]."&txtHour=".$Hour[1][0]."&chkAutomateTime=on&txtPostPW=");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
$posted = curl_exec($ch);
這裏是一個新的問題: 是post.aspx負載每次,它有一個新的驗證和狀態。 所以在我的代碼我第一次開post.aspx,並得到驗證和狀態和日期值,然後做一個標題,並張貼,我覺得當我嘗試後,其在新post.aspx,有一個新的驗證和狀態,大錯特錯。 當我呼應$貼出我得到一個錯誤頁,上面寫着形式是不完整.. 任何幫助,請....
內容相關問題
- 1. qTip保持打開狀態
- 2. 在鼠標上打開div並保持打開狀態
- 3. Android:打開一個保持打開狀態的相機
- 4. Windows窗體在打開後不能保持打開狀態
- 5. 在新標籤中打開一個URL
- 6. 打開一個ssh連接並在啓動時保持打開狀態
- 7. 通過觸發器打開一個div,只要在打開的div中保持打開狀態
- 8. 強制QDialog保持打開狀態
- 9. jquery slideDown不能保持打開狀態
- 10. 使顯示屏保持打開狀態
- 11. Linux設備保持打開狀態
- 12. 讓查詢框保持打開狀態
- 13. 如何使JOptionPane保持打開狀態
- 14. 打開頁面時滑動面板保持打開狀態
- 15. Java Keytool - 如何打開並保持打開狀態?
- 16. 使用捲曲打開GD圖像
- 17. 如果從打開狀態點擊標籤,jQuery datepicker被打開
- 18. 保持打開一個Sqlite光標
- 19. 如何在線程中打開窗體並強制其保持打開狀態
- 20. 保持JQuery對話框在鼠標懸停狀態下打開
- 21. 打開一個新窗口/標籤
- 22. Chrome會打開一個新標籤
- 23. JS:從回調fn打開新標籤(在新窗口中打開,無標籤)
- 24. 在一個標籤中打開鏈接
- 25. 如何打開$狀態,去()在新標籤
- 26. 保持訂閱在單一狀態下打開
- 27. Primefaces:更新對話框內容並保持打開狀態
- 28. 創建表單的新實例並保持打開狀態
- 29. 打開新標籤/窗口
- 30. modal在驗證過程中保持打開狀態