Tôi tình cờ gặp SVGCaptcha , và ngay lập tức biết đó là một ý tưởng tồi.
Tôi muốn bạn chỉ ra ý tưởng này tệ đến mức nào khi trích xuất mã xác nhận từ các hình ảnh SVG mà mã tạo ra.
Một hình ảnh ví dụ trông như thế này:
Đây là nguồn của hình ảnh ví dụ:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
width="200" height="40"
> <rect x="0" y="0" width="200" height="40"
style="stroke: none; fill: none;" >
</rect> <text style="fill: #4d9363;" x="5" y="34" font-size="20" transform="translate(5, 34) rotate(-17) translate(-5, -34)">8</text>
<text style="fill: #be8b33;" x="125" y="29" font-size="21" transform="translate(125, 29) rotate(17) translate(-125, -29)">f</text>
<text style="fill: #d561ff;" x="45" y="35" font-size="20" transform="translate(45, 35) rotate(-2) translate(-45, -35)">4</text>
<text style="fill: #3de754;" x="85" y="31" font-size="21" transform="translate(85, 31) rotate(-9) translate(-85, -31)">8</text>
<text style="fill: #5ed4bf;" x="25" y="33" font-size="22" transform="translate(25, 33) rotate(16) translate(-25, -33)">u</text>
<text style="fill: #894aee;" x="105" y="28" font-size="25" transform="translate(105, 28) rotate(9) translate(-105, -28)">1</text>
<text style="fill: #e4c437;" x="65" y="32" font-size="20" transform="translate(65, 32) rotate(17) translate(-65, -32)">x</text>
</svg>
Đầu vào là hình ảnh SVG, là một định dạng văn bản.
Hạn chế thực sự duy nhất là mã của bạn phải tạo ra các giá trị theo đúng thứ tự .
Các <text>yếu tố đầu vào theo thứ tự ngẫu nhiên, do đó bạn phải chú ý đến xthuộc tính trong <text>thẻ
Điểm là số byte trong mã
Vì mã hiện đang thực hiện hai biến đổi triệt tiêu lẫn nhau, bạn có thể bỏ qua chúng, nhưng nếu bạn cân nhắc chúng, hãy tiếp tục và giảm 30% so với điểm số của bạn.

Thực hiện hướng thực hiện từ phải sang trái và quấn quanh để bắt đầu vòng lặp chính.
Đọc một char từ stdin và kiểm tra giá trị cuối tập tin.
Nếu nó không phải là cuối tập tin, hãy kiểm tra xem nó có phải là một
Nếu không phải là a
Nếu không, nhân với 126 và mod với 126 2 để bỏ giá trị cũ nhất từ cặp và tạo khoảng trống cho ký tự tiếp theo.
Khi gặp một
Khi
Cuối cùng, khi đạt đến cuối tập tin, lặp lại 7 giá trị được lưu trong mảng và xuất từng cái một. Điều đó sẽ cung cấp cho bạn tất cả các chữ cái captcha theo đúng thứ tự.