2014-10-26 48 views
1

想象在外部網站這個驗證碼:PHP - 回答驗證碼通過捲曲GET/POST

<img id="sec-string" onclick="reLoadCaptcha(this);" src="captcha.jpg?random=4850737809844572943" alt="Try another" title="Try another"> 

現在我讀取和存儲「隨機」在這種情況下是「4850737809844572943」的價值。 這是用cURL GET完成的。 因此,現在我可以通過img-tag在我的網站上顯示圖像。 我可以在輸入字段中輸入anwser。

<input type="text" name="captchaInput" value="" id="captchaInput" class="small" autocomplete="off" onpaste="return false;" maxlength="16" tabindex="1" required="required" placeholder="Enter the characters"> 

現在我發回它作爲cURL POST,連同其餘的表單數據。 var-dump顯示正確的字符串,但結果爲「錯誤驗證碼」

表單數據的其餘部分是有效的。事實上,Captch輸入也是正確的。 它只是沒有被接受或看作是錯誤的。

任何想法可能會中斷執行?

感謝

編輯:

我想到了我的網站上的2次捲曲的執行。 首先是從外部頁面獲取像cookie,會話,表單元素等數據。 其次是POST數據,我填寫在我的頁面,到外部頁面。 那麼這算作1或2個實際的網站請求/操作?!

我的意思是因爲驗證碼及其實際情況。

想法?

+0

你爲什麼要轉發你的網站上的elses captcha? – arkascha 2014-10-26 17:16:05

+0

所以可以解決...我嘗試一些個人興趣。沒有公開的代碼或代碼我想公開。我不會殺死驗證碼。我只是想從外部網站上用人工輸入的方式來解決問題。 – Daniel 2014-10-26 17:34:55

+0

然後只需加載他們的頁面並解決驗證碼。 – arkascha 2014-10-26 17:51:31

回答

0

我終於解決了。

問題的確是有2個cURL請求。 我沒有將它們分成2個函數,因爲我的腳本是單個文件。 有點邏輯,但它花了我一些時間才意識到它:)

所以現在GET請求是在URL中沒有GET數據時發送的。 和POST請求,如果URL中有GET數據。

在發生圖片重新加載之前,因爲GET-cURL是在POST-cURL之前再次執行的。

驗證碼完成!

+0

但作爲一個側面的問題:我不知道如何停止這種方式工作。我的意思是保護自己免於使用這種訪​​問,例如註冊表。有了更多的工作,一個代理系統和一個不錯的團隊,有人可能很容易誤用這種技術來僞造一個網站,誘騙用戶訪問該網站,讓他們創建實際的真實賬戶並登錄他們,如果人們使用虛假網站註冊。有沒有辦法否定它,或? – Daniel 2014-10-28 10:48:57

+0

那麼我關閉這個問題,當它讓我(+6小時)如果你想出的信息,在那段時間後,我會appriciate如果你給我一個私人消息:) – Daniel 2014-10-28 10:59:58

+0

你怎麼能理解何時有一個GET curl或不是......在我的腳本上我做了這件事。 :首先我捲曲一個登錄頁面,然後掃描它獲得像__VIEWSTAT這樣的asp.net變量,然後再次使用我之前收集的發佈數據重新捲曲登錄頁面,手動設置驗證碼,使其長時間保持不變。但不工作,它會拋出一個錯誤,表示驗證碼錯誤。我現在應該怎麼做 ? – Ghazanfari 2015-12-17 09:47:39