VB.net PSC CAPTCHA Auslesen?
Moinsen!
also ich Bau gerade mein erstes Programm
ist nur was ganz kleines!
ich möchte PSC checken!
und das nicht auf der HP sondern mit dem TOOL
ich gebe also die PSC ein und eventuell ein Password
und klick dann auf PSC Checken!
er soll im Hintergrund den CAPTCHA ausfüllen
ist das machbar?
oder wäre es einfacher wenn ich einfach eine PictureBox nehme, wo dann der CAPTCHA angezeigt wird?
wenn ja wie mach ich das?
oder er zeigt den CAPTCHA in einem extra Fenster an!
MFG FuNTeX
/e kann man bei der Textbox ein Zeichenlimit setzen?!
AW: VB.net PSC CAPTCHA Auslesen?
Ich würde das so machen, dass du auf der Seite auf der das Captcha erscheint, über nen Webrequest den Quelltext auslesen und nach dem Link zum Captcha-Bild suchen. Dann kannst du ihn in deiner Picturebox darstellen lassen.
Edit: Klar
AW: VB.net PSC CAPTCHA Auslesen?
wäre ja dann "https://customer.cc.at.paysafecard.com/seam/resource/captcha" oder?
und wie lass ich ihn in der Picturebox darstellen?
AW: VB.net PSC CAPTCHA Auslesen?
Nein, das wäre es wahrscheinlich hier nicht, da beim Öffnen jeweils ein anderes Bild angezeigt wird. Du musst an das selbe Bild kommen, das dein Browser anzeigt.
AW: VB.net PSC CAPTCHA Auslesen?
das der quellcode vom Bild / Chaptcha
wie finde ich jetzt da genau das raus was ich brauche?
versteh das gerade nicht^^
wie gesagt alles neu für mich^^
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" media="screen,projection,tv,handheld" href="opera:style/image.css"/>
<style media="(max-width:164px),(max-height:48px)">body.contain {position: absolute;margin: 0;top: 0;left: 0;bottom: 0;right: 0;}body.contain > img {width: 100%;height: 100%;-o-object-fit: contain;cursor: zoom-in;}body.zoom > img {cursor: zoom-out;}</style>
<link rel="icon" href=""/>
<title>captcha (148×32)</title>
</head>
<body class="contain">
<img onerror="this.error=true" src=""/>
<script>(function() {if (window.donotrun)return;var img = document.querySelector('img');document.title = window.location.pathname.match(/([^\/]*)\/*$/)[1];var zoomX;var zoomY;function zoomIn() {document.body.className = 'zoom';window.scrollTo(zoomX + img.offsetLeft - window.innerWidth/2,zoomY + img.offsetTop - window.innerHeight/2);}function zoomOut() {zoomX = window.scrollX + window.innerWidth/2 - img.offsetLeft;zoomY = window.scrollY + window.innerHeight/2 - img.offsetTop;document.body.className = 'contain';}var interval = setInterval(function() {if (img.naturalWidth && img.naturalHeight) {clearInterval(interval);document.title += ' ('+img.naturalWidth+'\u00d7'+img.naturalHeight+')' ;var padding = 2*parseInt(getComputedStyle(document.body).padding , 10);var s = document.querySelector('style[media]');s.media = '(max-width:' + (img.naturalWidth + padding) + 'px),(max-height:' + (img.naturalHeight + padding) + 'px)';zoomX = img.naturalWidth/2;zoomY = img.naturalHeight/2;} else if (img.error) {clearInterval(interval);}}, 100);img.onclick = function(e) {var s = getComputedStyle(img);if (s.cursor == 'zoom-in') {zoomX = e.offsetX;zoomY = e.offsetY;var clientAspect = img.clientWidth/img.clientHeight;var naturalAspect = img.naturalWidth/img.naturalHeight;var scale;if (naturalAspect > clientAspect) {var displayHeight = img.clientWidth/naturalAspect;zoomY -= (img.clientHeight - displayHeight)/2;scale = img.clientWidth/img.naturalWidth;} else {var displayWidth = img.clientHeight*naturalAspect;zoomX -= (img.clientWidth - displayWidth)/2;scale = img.clientHeight/img.naturalHeight;}zoomX /= scale;zoomY /= scale;zoomIn();} else if (s.cursor == 'zoom-out') {zoomOut();}};window.onkeypress = function(e) {if (e.keyCode == 13 && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {var s = getComputedStyle(img);if (s.cursor == 'zoom-in')zoomIn();else if (s.cursor == 'zoom-out')zoomOut();e.preventDefault();}};var drag;window.onmousedown = function(e) {if (e.button == 0 && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && document.body.className == 'zoom')drag = {screenX: e.screenX,screenY: e.screenY,scrollX: window.scrollX,scrollY: window.scrollY};};window.onmouseup = function(e) {img.style.cursor = '';drag = undefined;};window.onmousemove = function(e) {if (!drag) return;img.style.cursor = 'move';window.scrollTo(drag.scrollX + drag.screenX - e.screenX,drag.scrollY + drag.screenY - e.screenY);};})();</script>
</body>
</html>
AW: VB.net PSC CAPTCHA Auslesen?
Schick mal die URL zu der Seite, auf der das Captcha dargestellt wird.
AW: VB.net PSC CAPTCHA Auslesen?
Hat er doch. Dahinter verbirgt sich wohl ein PHP Script das ein Bild erstellt.
AW: VB.net PSC CAPTCHA Auslesen?
Ich meinte eher die den kompletten Link der Seite, auf den man mit dem Browser navigiert (z.B. https://mypins.paysafecard.com/custo...ml?product=psc )
Da könnte man dann genauer schauen, wie der Browser mit dem Server kommuniziert.
AW: VB.net PSC CAPTCHA Auslesen?
AW: VB.net PSC CAPTCHA Auslesen?
Ein etwas älteres Script von mir. Ich hab keine Ahnung, ob es noch funktioniert, aber da siehst Du wie die Übertragung abläuft.
Code:
<?php
//psc checker with captchatrader support
//script by inout
error_reporting(E_ALL);
//config start
define('PSC_LOGIN_URL', 'https://customer.cc.at.paysafecard.com/psccustomer/GetWelcomePanelServlet');
define('PSC_CAPTCHA_URL', 'https://customer.cc.at.paysafecard.com/seam/resource/captcha');
define('INVALID_PIN_PASSWORD_STRING', 'Bei der Eingabe des');
define('WRONG_CAPTCHA_STRING', 'Der eingegebene Text stimmt nicht');
define('USER_AGENT', 'Mozillla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0');
define('COOKIE_FILE', 'cookie.txt');
define('CAPTCHA_FILE', 'captcha.jpg');
define('SOCKET_TIMEOUT', 60);
define('CAPTCHATRADER_SUBMIT_URL', 'http://api.captchatrader.com/submit');
define('CAPTCHATRADER_RESPOND_URL', 'http://api.captchatrader.com/respond');
define('CAPTCHATRADER_GET_CREDITS_URL', 'http://api.captchatrader.com/get_credits/username:{USERNAME}/password:{PASSWORD}/');
define('CAPTCHATRADER_USERNAME', '');
define('CAPTCHATRADER_PASSWORD', '');
define('CAPTCHATRADER_API_KEY', '');
define('PSC_CODES_INPUT_FILE', 'psc.txt');
define('RESULT_OUTPUT_FILE', 'out.txt');
define('RETRY_BAD', true);
//config end
$default_curl_options = array(CURLOPT_USERAGENT => USER_AGENT,
CURLOPT_COOKIEFILE => COOKIE_FILE,
CURLOPT_COOKIEJAR => COOKIE_FILE,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FRESH_CONNECT => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_FAILONERROR => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_CONNECTTIMEOUT => SOCKET_TIMEOUT,
CURLOPT_TIMEOUT => SOCKET_TIMEOUT);
function psc_get_cookie(&$error)
{
$error = false;
$ch = curl_init(PSC_LOGIN_URL);
if($ch !== false)
{
global $default_curl_options;
curl_setopt_array($ch, $default_curl_options);
$src = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
return $src !== false;
}
return false;
}
function psc_get_captcha($ch, $captcha_file)
{
$fp = fopen($captcha_file, 'w');
if($fp !== false)
{
curl_setopt_array($ch, array(CURLOPT_URL => PSC_CAPTCHA_URL,
CURLOPT_FILE => $fp));
$ok = curl_exec($ch);
fclose($fp);
return $ok;
}
return false;
}
function psc_get_data($src)
{
$data = array();
if(preg_match('#<td class="cell1">Wert</td>\s*<td class="cell2"><table>\s*<tbody>\s*<tr>\s*<td>(.+?)</td>\s*<td>(.+?)</td>\s*</tr>\s*</tbody>\s*</table>\s*</td>#i', $src, $match))
{
$data['credit'] = $match[1];
$data['credit_currency'] = $match[2];
}
if(preg_match('#<td class="cell1">Verfügbares Guthaben</td>\s*<td class="cell2"><table>\s*<tbody>\s*<tr class="price">\s*<td>(.+?)</td>\s*<td>(.+?)</td>\s*</tr>\s*</tbody>\s*</table>\s*</td>#i', $src, $match))
{
$data['available_credit'] = $match[1];
$data['available_credit_currency'] = $match[2];
}
if(preg_match('#<td class="cell1">Seriennummer</td>\s*<td class="cell2">(\d+)</td>#i', $src, $match))
$data['serial_number'] = $match[1];
if(preg_match('#<td class="cell1">In Zahlung</td>\s*<td class="cell2"><table>\s*<tbody>\s*<tr>\s*<td>(.+?)</td>\s*<td>(.+?)</td>\s*</tr>\s*</tbody>\s*</table>\s*</td>#i', $src, $match))
{
$data['paid'] = $match[1];
$data['paid_currency'] = $match[2];
}
if(preg_match('#<td class="cell1">Produktionsdatum</td>\s*<td class="cell2">(.+?)</td>#i', $src, $match))
$data['production_date'] = $match[1];
return $data;
}
function psc_login($ch, $pin, $captcha, $pass = '')
{
$pin_parts = str_split($pin, 4);
curl_setopt_array($ch, array(CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => 'https://customer.cc.at.paysafecard.com/psccustomer/GetWelcomePanelServlet',
CURLOPT_REFERER => 'https://customer.cc.at.paysafecard.com/psccustomer/GetWelcomePanelServlet',
CURLOPT_POSTFIELDS => "mainPagePart=mainPagePart&mainPagePart:rn1={$pin_parts[0]}&mainPagePart:rn2={$pin_parts[1]}&mainPagePart:rn3={$pin_parts[2]}&mainPagePart:rn4={$pin_parts[3]}&mainPagePart:passField=$pass&mainPagePart:verifyCaptcha=$captcha&mainPagePart:next=OK&javax.faces.ViewState=j_id2"));
$src = curl_exec($ch);
if($src !== false)
{
if(stripos($src, WRONG_CAPTCHA_STRING) !== false)
return 'wrong captcha';
else if(stripos($src, INVALID_PIN_PASSWORD_STRING) !== false)
return 'invalid pin/password';
else
return psc_get_data($src);
}
return false;
}
function valid_psc_code($psc_code)
{
return preg_match('/^\d{16}$/', $psc_code);
}
function psc_data_to_string($data)
{
$str = '';
foreach($data as $key => $value) $str .= "$key: $value\n";
return $str;
}
function captchatrader_submit($username, $password, $api_key, $captcha_file)
{
$ch = curl_init(CAPTCHATRADER_SUBMIT_URL);
if($ch !== false)
{
global $default_curl_options;
curl_setopt_array($ch, $default_curl_options + array(CURLOPT_POSTFIELDS => array('username' => $username, 'password' => $password, 'api_key' => $api_key, 'value' => "@$captcha_file")));
$src = curl_exec($ch);
if($src !== false)
$return = json_decode($src, true);
else
$return = curl_error($ch);
curl_close($ch);
return $return;
}
return false;
}
function captchatrader_respond($username, $password, $is_correct, $ticket)
{
$ch = curl_init(CAPTCHATRADER_RESPOND_URL);
if($ch !== false)
{
global $default_curl_options;
curl_setopt_array($ch, $default_curl_options + array(CURLOPT_POSTFIELDS => http_build_query(array('username' => $username, 'password' => $password, 'is_correct' => $is_correct, 'ticket' => $ticket), '', '&')));
$src = curl_exec($ch);
if($src !== false)
$return = json_decode($src, true);
else
$return = curl_error($ch);
curl_close($ch);
return $return;
}
return false;
}
function captchatrader_get_credits($username, $password)
{
$ch = curl_init(str_replace(array('{USERNAME}', '{PASSWORD}'), array($username, $password), CAPTCHATRADER_GET_CREDITS_URL));
if($ch !== false)
{
global $default_curl_options;
curl_setopt_array($ch, $default_curl_options);
$src = curl_exec($ch);
if($src !== false)
$return = json_decode($src, true);
else
$return = curl_error($ch);
curl_close($ch);
return $return;
}
return false;
}
if(psc_get_cookie($error))
{
$ch = curl_init();
if($ch !== false)
{
$use_captchatrader = CAPTCHATRADER_USERNAME != '' && CAPTCHATRADER_PASSWORD != '';
$ok = !$use_captchatrader;
if($use_captchatrader)
{
echo "checking captchatrader status...\n";
$credits = captchatrader_get_credits(CAPTCHATRADER_USERNAME, CAPTCHATRADER_PASSWORD);
if(is_array($credits))
{
if($credits[0] == 0)
{
$ok = $credits[1] > 0;
if($ok)
echo "captchatrader credits available: {$credits[1]}\n";
else
echo "no captchatrader credits available\n";
}
else
echo "unable to get captchatrader credits: \"{$credits[1]}\"\n";
}
else
echo "unable to get captchatrader credits: \"$credits\"\n";
}
if($ok)
{
if(file_exists(PSC_CODES_INPUT_FILE))
{
$psc_codes = file(PSC_CODES_INPUT_FILE, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if($psc_codes !== false)
{
if(is_writeable(RESULT_OUTPUT_FILE))
{
curl_setopt_array($ch, $default_curl_options);
foreach($psc_codes as $psc_code)
{
$psc_code = trim($psc_code);
if($psc_code == '') continue;
$tmp = explode(':', $psc_code);
$psc_code = $tmp[0];
$psc_code = str_replace('-', '', $psc_code);
if(!valid_psc_code($psc_code)) continue;
$password = count($tmp) > 1 ? $tmp[1] : '';
while(true)
{
echo "checking $psc_code";
if($password) echo ":$password";
echo "\n";
if(psc_get_captcha($ch, CAPTCHA_FILE))
{
if($use_captchatrader)
{
echo "submitting captcha...\n";
$submit = captchatrader_submit(CAPTCHATRADER_USERNAME, CAPTCHATRADER_PASSWORD, CAPTCHATRADER_API_KEY, CAPTCHA_FILE);
if(is_array($submit))
{
if($submit[0] != -1)
{
$captcha = $submit[1];
echo "captcha received: $captcha\n";
}
else
{
echo "unable to submit captcha: \"{$submit[1]}\"\n";
break 2;
}
}
else
{
echo "http error while submitting captcha: \"$submit\"\n";
break 2;
}
}
else
{
exec(CAPTCHA_FILE);
echo 'captcha: ';
$captcha = stream_get_line(STDIN, 1024, PHP_EOL);
}
$data = psc_login($ch, $psc_code, $captcha, $password);
if(is_array($data))
{
echo "check ok\n";
$str = $psc_code;
if($password) $str .= ":$password";
$str .= "\n";
$str .= psc_data_to_string($data);
$str .= "\n";
echo $str;
if(file_put_contents(RESULT_OUTPUT_FILE, $str, FILE_APPEND) === false)
echo "unable to write output file\n";
}
else if(curl_error($ch))
echo 'http error: "' . curl_error($ch) . "\"\n";
else
{
echo "$data\n";
if($data != 'wrong captcha') break;
}
if($use_captchatrader)
{
$respond = captchatrader_respond(CAPTCHATRADER_USERNAME, CAPTCHATRADER_PASSWORD, is_array($data), $submit[0]);
if(is_array($respond))
{
if($respond[0] == 0)
echo "captcha response ok\n";
else
{
echo "unable to respond to captcha: \"{$respond[1]}\"\n";
//break;
}
}
else
{
echo "http error while responding to captcha: \"$respond\"\n";
//break;
}
}
if(!is_array($data) && $data == 'wrong captcha' && RETRY_BAD)
echo "retrying\n";
else
break;
}
else if(curl_error($ch))
echo 'http error: "' . curl_error($ch) . "\"\n";
else
echo "unable to create captcha file\n";
}
}
}
else
echo "output file is not writeable\n";
}
else
echo "unable to load psc codes input file\n";
}
else
echo "psc codes input file not found\n";
}
curl_close($ch);
}
else
echo "unable to create curl handle (2)\n";
}
else if($error)
echo "unable to get curl cookie: \"$error\"\n";
else
echo "unable to create curl handle (1)\n";
?>