2012-10-31 79 views

回答

1

更靈活的方式 - 獲取視圖狀態和eventvalidation動態:

<?php 
$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 

//__VIEWSTATE 
$viewstate = ''; 

//__EVENTVALIDATION 
$eventvalidation = ''; 

// Fetch VIEWSTATE 
$p1 = '<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="'; 
$p = strpos($c, $p1); 
if ($p !== false) { 
    $s = substr($c, $p+strlen($p1)); 
    $pcs = explode('"', $s); 
    if (!empty($pcs[0])) { 
     $viewstate = $pcs[0]; 
    } 
} 

// Fetch EVENTVALIDATION 
$p1 = '<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="'; 
$p = strpos($c, $p1); 
if ($p !== false) { 
    $s = substr($c, $p+strlen($p1)); 
    $pcs = explode('"', $s); 
    if (!empty($pcs[0])) { 
     $eventvalidation = $pcs[0]; 
    } 
} 

// PUT YOUR OBJECT & SUBJECT HERE 
$postvalues = array(
    'tmpl$main$txtSubject' => '', 
    'tmpl$main$txtObject' => '', 
    'tmpl$main$btnNew' => 'New Paragraph', 
); 

$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?__VIEWSTATE='.urlencode($viewstate).'&__EVENTVALIDATION='.urlencode($eventvalidation).'&tmpl%24main%24txtSubject='.urlencode($postalues['tmpl$main$txtSubject']).'&tmpl%24main%24txtObject='.urlencode($postalues['tmpl$main$txtObject']).'&tmpl%24main%24btnNew=New%20Paragraph'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 


$t = '<span id="tmpl_main_lblPara" class="randomSentence">'; 
$p = strpos($c, $t); 
if ($p !== false) { 
    $s = substr($c, $p + strlen($t)); 
    $pcs = explode('</span>', $s); 


    echo $pcs[0]; 
} 
+0

告訴我它是否有效。 –

+0

輸出似乎包括「」「 – Scott

+0

請現在再檢查一次。 –

1

只需嘗試POST頁面。 或獲取此URL http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?_VIEWSTATE=%2FwEPDwUINTQyOTcxOTkPZBYCZg9kFgQCAg9kFgICAQ9kFgICAQ9kFgQCBw8PFgIeBFRleHRlZGQCCQ8PFgQfAGUeB1Zpc2libGVoZGQCAw8PFgIfAAU4Q29weXJpZ2h0IDIwMDcgd2F0Y2hvdXQ0c25ha2VzLmNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5kZGTorXr6Gf6R0THMyZRJWZJWtrWHYw%3D%3D&_EVENTVALIDATION=%2FwEWBAKs0KOMDAKf643lBALimIbkBQLx2ZbtAfvuWUuGYHixchu%2FJnnxDjXxcnqg&tmpl%24main%24txtSubject=&tmpl%24main%24txtObject=&tmpl%24main%24btnNew=New+Paragraph

您只需要獲取span.randomSentence內容。 This可以幫助做到這一點。

編輯
代碼我測試過:

$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?__VIEWSTATE=/wEPDwUINTQyOTcxOTkPZBYCZg9kFgQCAg9kFgICAQ9kFgICAQ9kFgQCBw8PFgIeBFRleHRlZGQCCQ8PFgQfAGUeB1Zpc2libGVoZGQCAw8PFgIfAAU4Q29weXJpZ2h0IDIwMDcgd2F0Y2hvdXQ0c25ha2VzLmNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5kZGTorXr6Gf6R0THMyZRJWZJWtrWHYw==&__EVENTVALIDATION=/wEWBAKs0KOMDAKf643lBALimIbkBQLx2ZbtAfvuWUuGYHixchu/JnnxDjXxcnqg&tmpl%24main%24txtSubject=&tmpl%24main%24txtObject=&tmpl%24main%24btnNew=New%20Paragraph'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 

$p = strpos($c, '<span id="tmpl_main_lblPara" class="randomSentence">'); 
if ($p !== false) { 
    $s = substr($c, $p); 
    $pcs = explode('</span>', $s); 
    echo $pcs[0]; 
} 
+0

你是如何得到viewstate等完整的URL? – Scott

+0

發表在螢火蟲的形式和鋸場。我看到現在不工作。如果您需要,我會爲您提供更靈活的解決方案。你做? –

+0

那真是太棒了......謝謝。 – Scott