2013-05-08 60 views
11

我正在使用PhantomJS登錄網站,驗證碼必須手動輸入。 如何將驗證碼圖像保存到磁盤,然後在PhantomJS控制檯中手動輸入驗證碼?有沒有辦法從PhantomJS的keybord讀取用戶輸入?

+0

保存文本..不是驗證碼提供的文本 – matzone 2013-05-09 00:01:09

+1

沒有文字,只有圖像。你必須自己(人類)認可,然後提交可識別的文本。 – aztack 2013-05-09 00:04:25

+0

像[this](http://labs.abeautifulsite.net/simple-php-captcha/)例子,簡單的方法從PHP中的文本製作capctha .. – matzone 2013-05-09 00:18:31

回答

1

你所問的聲音幾乎不可能。

如果我不顧一切地做這樣的事我可能會考慮以下方法:

  • 搶捕獲,保存到磁盤作爲圖像
  • 輸出到控制檯,告訴用戶圖像準備
  • 使用window.setTimeout以等待30秒
  • 然後用戶編輯一個文本文件(如/tmp/code.txt)與捕捉結果
  • 後30秒window.setTimeout無線回調我會讀/tmp/code.txt

這不太好。但我想不出任何其他方式。

15

我有同樣的問題,只是使用系統模塊結合page.render()和一些參數傳遞給page.evaluate。

page.render('pagewithcatpcha.jpg'); 
page.injectJs('http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'); 

var arg1 = consoleRead(); 

page.evaluate(function (arg1) { 
$('.yourFormBox').val(arg1); 
$('.yourForm').submit(); 
}, arg1); 

function consoleRead() { 
var system = require('system'); 

system.stdout.writeLine('CaptchaCode: '); 
var line = system.stdin.readLine(); 

return line; 
} 
+0

是否奏效? @aztack你最終做了什麼? – TarunG 2014-01-24 07:11:01

+0

很好用,*除*我無法注入遠程文件;而是我使用** page.injectJs('jquery.min.js')** – 2014-10-30 06:20:56

+0

@AdamAlbright使用外部js使用'page.includeJs('http://ajax...jquery.min.js')' ,從本地使用'page.injectJs('myJs.js')'來代替,就像你使用':)'一樣。這個解決方案對我來說也很好,+1 !. – albciff 2015-06-03 15:14:53

相關問題