Simple Dom webscraping onmogelijk maken
Met veel werk heb ik een database bij elkaar geraapt met informatie wat op een website word getoond.
Ik wil wel verbieden dat spiders/crawlers deze inforamtie kunnen vergaren.
Ik lees over een chaptcha, maar bij elke zoekquery of de volgende pagina een chaptcha inklikken lijkt me ook niet echt gebruiksvriendelijk.
Weet iemand wat de beste manier hiervoor is?
Alvast bedankt
Daniel
Gewijzigd op 01/06/2021 15:42:49 door - Ariën -
Of alles achter een login zetten.
reCAPTCHA v3 is voldoende effectief tegen tegen bots.
Verder is het vooral afhankelijk van de waarde van de informatie. Het omslagpunt waarop het lonend wordt om een captcha farm in te huren, ligt niet eens zo hoog.
Verder is het vooral afhankelijk van de waarde van de informatie. Het omslagpunt waarop het lonend wordt om een captcha farm in te huren, ligt niet eens zo hoog.
Dit is een bedrijvengids. Dus zonder inloggen kunnen ze de eerste 50 bedrijven zien en daarna op een detaillink klikken. De detaillinks van elk bedrijf moet altijd gezien kunnen worden, omdat dit wel door alle bots geindexeert dient te worden.
Inderdaad alles een login zetten lijkt me wel een goed plan.
Via de CLI werken sessies ook niet, dus alleen via de browser als ze daadwerkelijk geregistreerd zijn, maar dat kunnen spammers ook doen. Hier zal ik dan een sterke verificatie voor eisen.
Een chaptchafarm kan dit zo omzeilen idd, dus dat lijkt me geen goede optie.
Enige vereiste is de tafel van 10.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
session_start();
if ( isset($_POST['submit']) )
{
$human = intval($_POST['human']);
$text['errHuman'] = '';
if ( md5( $human ) != $_SESSION['numsum'] )
{
$text['errHuman'] = 'Your anti-spam is <b>wrong</b>';
} else {
$text['errHuman'] = 'Your anti-spam is <b>correct</b>';
}
}
$num1 = rand(1,9);
$num2 = rand(1,9);
$_SESSION['numsum'] = md5( $num1 * $num2 );
?>
<form method="POST">
<label for="human"><?php echo $num1 . ' * ' . $num2 . ' = ?' ;?> </label>
<input
type = "number"
id = "human"
name = "human"
placeholder = "Your answer"
autofocus
style = "font-size: 120%; padding: 0.5em; width: 7em;"
/>
<input
type="submit"
name="submit"
value="Send" />
</form>
<p><?php echo $text['errHuman']; ?></p>
</div>
session_start();
if ( isset($_POST['submit']) )
{
$human = intval($_POST['human']);
$text['errHuman'] = '';
if ( md5( $human ) != $_SESSION['numsum'] )
{
$text['errHuman'] = 'Your anti-spam is <b>wrong</b>';
} else {
$text['errHuman'] = 'Your anti-spam is <b>correct</b>';
}
}
$num1 = rand(1,9);
$num2 = rand(1,9);
$_SESSION['numsum'] = md5( $num1 * $num2 );
?>
<form method="POST">
<label for="human"><?php echo $num1 . ' * ' . $num2 . ' = ?' ;?> </label>
<input
type = "number"
id = "human"
name = "human"
placeholder = "Your answer"
autofocus
style = "font-size: 120%; padding: 0.5em; width: 7em;"
/>
<input
type="submit"
name="submit"
value="Send" />
</form>
<p><?php echo $text['errHuman']; ?></p>
</div>
Hierin dus:
In de crawler kan men ook deze waarde berekenen met een split of pregmatch en vervolgens in de "human" input field als post meegeven.
Maar dan moet ik een manier vinden om text naar een plaatje met PHP GD bijv. te converteren.
Bedankt iig
Gewijzigd op 01/06/2021 20:06:46 door Daniel van Seggelen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
session_start();
class createCaptcha {
function generateCode($characters) {
/* list all possible characters, similar looking characters and vowels have been removed */
$possible = '23456789bcdfghjkmnpqrstvwxyz';
$code = '';
$i = 0;
while ($i < $characters) {
$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
$i++;
}
return $code;
}
function createCaptcha() {
$code = $this->generateCode(5);
$my_img = imagecreatefrompng('button.png');
$background = imagecolorallocate( $my_img, 0, 0, 255 );
$text_colour = imagecolorallocate( $my_img, 255, 255, 0 );
imagestring( $my_img, 4, 20, 3, $code, $text_colour );
header( "Content-type: image/png" );
imagepng($my_img);
imagecolordeallocate($text_color);
imagedestroy( $my_img );
$_SESSION['security_code'] = $code;
}
}
$captcha = new createCaptcha();
?>
session_start();
class createCaptcha {
function generateCode($characters) {
/* list all possible characters, similar looking characters and vowels have been removed */
$possible = '23456789bcdfghjkmnpqrstvwxyz';
$code = '';
$i = 0;
while ($i < $characters) {
$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
$i++;
}
return $code;
}
function createCaptcha() {
$code = $this->generateCode(5);
$my_img = imagecreatefrompng('button.png');
$background = imagecolorallocate( $my_img, 0, 0, 255 );
$text_colour = imagecolorallocate( $my_img, 255, 255, 0 );
imagestring( $my_img, 4, 20, 3, $code, $text_colour );
header( "Content-type: image/png" );
imagepng($my_img);
imagecolordeallocate($text_color);
imagedestroy( $my_img );
$_SESSION['security_code'] = $code;
}
}
$captcha = new createCaptcha();
?>
In dit geval moet je de code natypen in een inputveld en controleren.
Toevoeging op 02/06/2021 10:06:02:
Hier nog de ontbrekende button.png afbeelding.
Code (php)
1
<img width="93" height="23" src="data:image/png;base64,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">
Gewijzigd op 01/06/2021 21:31:40 door Adoptive Solution