Cách tốt nhất để liệt kê một địa chỉ email "Liên hệ với chúng tôi" trên một trang web, trong khi giảm khả năng nó sẽ bị spam?
Là đặt địa chỉ email trong một hình ảnh là kỹ thuật tốt nhất, hoặc có những người khác?
Cách tốt nhất để liệt kê một địa chỉ email "Liên hệ với chúng tôi" trên một trang web, trong khi giảm khả năng nó sẽ bị spam?
Là đặt địa chỉ email trong một hình ảnh là kỹ thuật tốt nhất, hoặc có những người khác?
Câu trả lời:
Tôi chuyển tất cả các biểu mẫu liên hệ thông qua tài khoản Gmail vứt đi, chuyển tiếp thư đến địa chỉ email thực. Nó miễn phí, thật dễ dàng và phát hiện thư rác của Gmail là đỉnh cao.
Nó không đòi hỏi thêm nỗ lực khi tạo trang web và nếu có bất cứ điều gì thông qua bạn chỉ cần đăng nhập vào tài khoản Gmail và gắn cờ là thư rác.
Sau đó, bạn có thể đặt hộp thư đến Gmail tự động lưu trữ mọi thứ đã được chuyển tiếp hoặc thậm chí xóa nó nếu bạn không muốn bản sao bổ sung đó được giữ ở đó.
Sử dụng một obfuscator email
Không trả lời của tôi là không làm điều này. Các hệ thống email hiện đại, chẳng hạn như GMail và thiết bị chống thư rác Barracuda, thực hiện công việc tuyệt vời để lọc thư rác. Bất kỳ rào cản nào bạn đặt giữa bạn và khách truy cập của bạn có nghĩa là mức độ tương tác thấp hơn và, tùy thuộc vào loại trang web, khả năng mất doanh số.
Nếu bạn lo lắng về những người dùng chưa cài đặt ứng dụng thư khách gốc hoặc những người không cài đặt mailto: handler, thì hãy có trang Liên hệ với cả hai địa chỉ email được liên kết và một biểu mẫu (không có CAPTCHA) và để người dùng lựa chọn.
Thư rác gây phiền nhiễu, nhưng đó là gánh nặng của chúng tôi, không phải người dùng của chúng tôi.
Sử dụng ngôn ngữ tự nhiên để đánh vần địa chỉ email ...
Ví dụ:
thatguy at gmail dot com
Bạn sẽ ngạc nhiên về việc viết một bot có thể phân biệt ngôn ngữ tự nhiên khó như thế nào so với viết bot chỉ tìm kiếm ký hiệu @ và lấy lại địa chỉ bình thường.
Nó không phải là 100% hoàn hảo nhưng nó không tệ hơn obfuscation và nó sẽ không xa lánh người dùng khiếm thị và / hoặc người dùng bị vô hiệu hóa JavaScript.
Cập nhật: Đây là một ví dụ về kỹ thuật này đang hoạt động .
Cập nhật 2:
Nó chỉ ra rằng ai đó đã thực sự nghiên cứu về điều này và đăng nó trực tuyến. Xem bài đăng SuperUser mô tả kết quả hoặc bài viết gốc
thatguy funny-symbol gmail.com
Cá nhân, tôi không hiển thị địa chỉ email trên các trang web, nhưng thay vào đó có một mẫu liên hệ dễ sử dụng, dễ truy cập, cùng với một dấu hiệu cho biết email đến từ ai; cho phép người dùng gửi email của chủ sở hữu và nhà điều hành trang web mà không để lộ địa chỉ email hoặc phải chuyển qua nhiều vòng JavaScript khác nhau, v.v.
Đây thường là cách tốt nhất nếu bộ lọc thư rác của bạn không tinh vi.
sử dụng css để ẩn một số nhiễu từ văn bản thực (chỉ tất cả trong một dòng, tôi đã định dạng nó để minh họa kỹ thuật tốt hơn):
u<span class="spam">noise</span>ser
@<span class="spam">noise</span>
example<span class="spam">noise</span>
.com
và sau đó sử dụng đoạn trích css nhỏ này:
.spam { display: none; }
nếu bạn cần mailto:
nội dung hợp lệ , thì bạn phải tạo nội dung đó qua jscript trong dom, xem một số câu trả lời khác cho điều đó. nhưng tôi không phải là một người bạn lớn của điều đó
Những gì tôi làm là viết ra địa chỉ email dưới dạng từ, được bọc trong thẻ span : <span class="email">joe dot blow at gmail dot com</span>
. Sau đó, một tập lệnh cấp trang chạy, lấy bất kỳ khoảng nào như vậy và thay thế từng đoạn bằng một liên kết email được xây dựng. Nó có thể không quá mơ hồ, nhưng tôi đã không có khiếu nại. Ngoài ra, nếu JavaScript bị vô hiệu hóa, người dùng vẫn có thể đọc văn bản nhịp thực tế.
Giải pháp tốt nhất: sử dụng bộ lọc thư rác .
Tôi thực sự sử dụng Gmail để xử lý tài khoản email POP3 cho doanh nghiệp của mình, vì việc kiểm tra email trên các máy tính khác nhau dễ dàng hơn nhiều. Bộ lọc thư rác của Gmail là tốt nhất trên thế giới.
Vì vậy, bạn chỉ có thể hiển thị webmaster@example.com làm địa chỉ email của mình và quên thư rác.
sử dụng mã hóa html như thế ʉẮᶗ
, trình duyệt sẽ hiển thị nó như "abc"
Sử dụng thư viện đồ họa (chẳng hạn như GD được PHP hỗ trợ hoặc tương tự) để tự động tạo hình ảnh .png chứa địa chỉ email.
So với câu trả lời khác của tôi , giải pháp này ít gây khó chịu hơn cho người dùng (nhưng không minh bạch; họ không thể sao chép và dán nó mà phải gõ lại từ đầu) nhưng cũng kém an toàn hơn: một máy tính có thể đọc được hình ảnh không bị ảnh hưởng.
Nhưng nhìn chung tôi nghĩ đó là một sự thỏa hiệp tốt; nó sẽ ngăn chặn phần lớn các bot spam.
Một cách khá tốt, trong khi không hoàn hảo là tạo địa chỉ e-mail thông qua javascript. Hầu hết các con nhện tìm kiếm e-mail không thực thi javascript và do đó không tìm thấy địa chỉ e-mail có thể đọc được.
Đây chỉ là một ví dụ làm thế nào nó có thể được thực hiện.
Tôi sử dụng một tập lệnh Python đơn giản để chuyển đổi địa chỉ email thành một liên kết mailto trong đó địa chỉ email là thực thể HTML được mã hóa. Điều này là hoàn toàn minh bạch cho người dùng, nhưng dường như che khuất nội dung đủ để đánh bại hầu hết các bot thu hoạch đơn giản.
#! /usr/bin/env python3.0
def entity_encode(text):
out = ""
ba = text.encode()
for i in range(len(ba)):
out = out + "&#x{0:02x};".format (ba[i])
return out
def print_email_link(address) :
print('<!-- {0} -->'.format(address))
print('<a href="{0}{1}">{1}</a>'.format(entity_encode("mailto:"), entity_encode(address)))
print_email_link("test123@example.com")
Điều này cho đầu ra
<!-- test123@example.com -->
<a href="mailto:test123@example.com">test123@example.com</a>
Khi kết quả được dán vào một trang web, trình duyệt sẽ hiển thị nội dung "test123@example.com" dưới dạng siêu dòng tới "mailto: test123@example.com", vì vậy nó rất thuận tiện cho người dùng cuối như bao gồm cả địa chỉ trong Rõ ràng. Nhưng nó dường như đánh bại nhiều bot thu hoạch.
Rõ ràng, tôi xóa nhận xét bằng phiên bản ASCII đơn giản của địa chỉ một khi tôi đã dán liên kết email bị che khuất vào vị trí thích hợp trong nguồn HTML của trang web.
Yêu cầu người dùng giải quyết CAPTCHA trước khi cho họ xem địa chỉ email (hoặc nếu bạn có biểu mẫu liên hệ, trước khi cho phép người dùng gửi nó).
Nó gây khó chịu nhất cho người dùng nhưng chắc chắn là hiệu quả nhất.
Tôi là một fan hâm mộ của obfuscation, trong đó địa chỉ email về cơ bản được hiển thị bằng Javascript.
Ví dụ, my@email.com
có thể được hiển thị là
<a href="javascript:location='mailto:\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d';void 0">
<script type="text/javascript">document.write('\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d')</script></a>
Theo như người dùng quan tâm, đó là văn bản bình thường và có thể được sao chép và dán. Bots mặt khác sẽ có một thời gian khó khăn hơn với nó.
Đây là obfuscator tôi đã sử dụng.
<a href="#" onclick="document.location.href='mailto:...'; return false">
Một chiều:
<script language="javascript">
<!--
var name = "user"
var host1 = "gm"
var host2 = "ail.com"
var addr =
document.write("<a href=mai" + "lto:" +
name + "@" + host1 + host2 +
">" + name + "@" + host1 + host2 + "</a>")
//-->
</script>
Bạn có thể viết "Giải mã email của tôi: người dùng tại com dot gmail" trong <noscript>
các thẻ cho những người đã tắt javascript. Bằng cách này bạn có được chức năng siêu liên kết. Bạn có một cơ hội tốt để giữ những người gửi thư rác khỏi địa chỉ của bạn và những người đã tắt javascript hoặc chỉ văn bản trình duyệt vẫn có thể nhận được địa chỉ email của bạn.
Tất cả các kỹ thuật che giấu trên thế giới không thể giúp đỡ về lâu dài nếu bạn có nhiều người liên lạc với bạn. Tất cả chỉ là để ai đó gửi cho bạn một tin nhắn và sau đó bị nhiễm một số phần mềm độc hại quét hộp thư đến của họ / gửi thư / sổ địa chỉ / bất cứ điều gì cho các địa chỉ hợp lệ, và địa chỉ của bạn được chuyển từ danh sách sang danh sách [Tôi thậm chí còn có danh bạ Những người đủ ngu ngốc để đặt địa chỉ email và mật khẩu vào các biểu mẫu trực tuyến vì những lý do ngu ngốc nhất, có lẽ bạn cũng vậy, gần đây nhất là một trang web được cung cấp để tính toán "biểu đồ và dự đoán chiêm tinh email" của ai đó đã ngay lập tức spam tất cả liên hệ của những kẻ ngốc với lời mời đến cùng một trang và <vị thần> chỉ biết kết quả những danh sách khác mà chúng tôi hiện đang có là gì] .
Địa chỉ trên các trang web công cộng của tôi không chỉ là một địa chỉ vứt đi - đó là trên một tên miền phụ. Nếu tôi bắt đầu nhận được thư rác trên tên miền phụ đó, tôi sẽ tạo một tên miền mới, cập nhật các trang web có liệt kê chi tiết liên hệ của tôi và một thời gian ngắn sau đó tôi sẽ xóa hoàn toàn tên miền phụ khỏi bản ghi DNS. Nếu bạn làm điều này hoặc bất kỳ kỹ thuật địa chỉ vứt đi nào khác, hãy đảm bảo bạn làm rõ (trên bất kỳ trang nào liệt kê địa chỉ và ở chân trang của bất kỳ thư nào bạn gửi bằng địa chỉ đó) rằng địa chỉ sẽ thay đổi trong tương lai và nếu mọi người có thể thay đổi Không được thông qua họ nên kiểm tra lại để đảm bảo rằng họ có địa chỉ chính xác.
Điều này có lợi thế là chỉ là một địa chỉ đơn giản để mọi người nhấp vào (nếu trình duyệt + trình gửi thư của họ được liên kết theo cách đó) hoặc sao chép + dán mà không cần sử dụng bộ não của họ để chỉnh sửa địa chỉ sau đó (Tôi luôn ngạc nhiên về số lượng khác người thông minh và biết quan sát không thể hiểu điều đó đúng). Điều đó cũng có nghĩa là máy chủ thư của tôi không dành nhiều ngày để gửi thư đến địa chỉ "ngẫu nhiên" (aaron @, adam @, amy01 @, ...) tại các tên miền phụ đã hết hạn. Nó cũng không gây nhầm lẫn cho các trình đọc màn hình được sử dụng bởi người mù hoặc người nghèo.
Một tùy chọn khác mà tôi chưa thử là sử dụng yêu cầu AJAX để đọc trong địa chỉ email và các chi tiết khác. Điều này có thể hiệu quả hơn một chút so với document.write
obfuscation, nhưng sẽ tăng thêm một chút tải trên máy chủ web.
Thay vào đó, tôi thường sử dụng biểu mẫu "liên hệ với tôi / chúng tôi" nhưng tôi thấy rằng họ bị spam nhiều như, đôi khi còn hơn cả địa chỉ email văn bản đơn giản - đôi khi bởi các tập lệnh đang cố sử dụng biểu mẫu để tạo tài khoản ở đâu đó chứ không phải sử dụng nó như một hình thức liên lạc.
Nếu bạn có bộ lọc bot (sử dụng 1x1px, mạng con, bot đã biết, phát hiện jscript, trình giới thiệu http và tác nhân trình duyệt), bạn không thể hiển thị thông tin nếu đó là bot.
Giải pháp trong PHP:
<?
if (!isbot()) {
echo 'mailto:'.$email_address_for_real_people;
}
else {
echo 'mailto:yourself_bot@'.$bots_domain_address;
}
?>
isbot()
là một chức năng do người dùng tạo chỉ ra bất kỳ thói quen lọc bot nào bạn có.
Cách dễ nhất tôi tìm thấy là sử dụng biểu mẫu liên hệ có địa chỉ mặc định, nhưng cũng có khả năng người dùng chọn người liên lạc nên đến (tiếp thị, bán hàng, hỗ trợ kỹ thuật, v.v.). Sau đó, dựa trên giá trị thả xuống, dữ liệu biểu mẫu đã đăng được gửi bởi máy chủ đến địa chỉ email thích hợp.
Chạy danh sách liên lạc này ra khỏi bảng cơ sở dữ liệu để bạn có thể dễ dàng cập nhật / thêm các mục vào trình đơn thả xuống. Bằng cách đó, bạn sẽ không bao giờ để lộ bất kỳ loại địa chỉ nào cho thế giới rộng lớn của các bot spam và vẫn cung cấp cho người dùng của bạn một cách tuyệt vời để gửi phản hồi.
Không thể nào, Jose! - Vâng, Jose!
Hoàn toàn không có cách nào để 'dừng' việc thu hoạch a href="mailto:"
địa chỉ email. Từ lâu, người ta tin rằng sử dụng JavaScript là một cách tốt để ngăn chặn hầu hết các bot thu hoạch nhưng ngày nay các bot khá giỏi trong việc đánh bại phương pháp này. Họ cũng có thể đánh bại hình ảnh có chứa địa chỉ email, giống như cách họ có thể đánh bại captcha bằng phần mềm decaptcha.
Cách tốt hơn!
Cách tiếp cận tốt hơn sẽ là sử dụng một dịch vụ thư tín uy tín cung cấp khả năng chặn thư rác tốt. Google G Suite và Microsoft Office 365 sử dụng thuật toán không thể so sánh với bất kỳ phần mềm nào trên thị trường, chủ yếu là vì họ nhận được hàng triệu email mỗi ngày và họ có thể 'tìm hiểu' và những kẻ gửi thư rác trong danh sách đen từ lâu trước khi họ cố gắng gửi email cho bạn.
Trên thực tế, một năm trước, Google cho biết công nghệ máy học của họ hiện chặn 99,9% thư rác và thư lừa đảo của Gmail , Microsoft Exchange và các máy chủ thư chạy phía sau plesk / cpanel không thể cạnh tranh với sự bảo vệ này.
Tóm lược
Chặn thư rác bằng cách sử dụng dịch vụ thư tín uy tín có khả năng học máy AI. Bạn cũng có thể tiến thêm một bước bằng cách ngăn những kẻ gửi thư rác truy cập trang web của bạn bằng Cloudflare, điều này sẽ phát hiện phần lớn các bot hung hăng trước khi chúng truy cập trang web của bạn.
Tôi đã sử dụng fred@no-spam.domain.com trong nhiều năm. Người dùng thường biết đủ để xóa 'không spam.'.
Mặt khác, tôi chỉ sử dụng một hình thức liên lạc với 'captcha' và gửi thư trực tiếp từ trang web.
Một điều tôi làm là sử dụng API từ http://www.stopforumspam.com để kiểm tra những kẻ gửi thư rác. Hãy liên hệ với tôi để biết chi tiết và tôi sẽ rất vui lòng giúp bạn với nó!
Bud Manz
Thiết kế web Manz, LLC
Nếu bạn không phiền khi sử dụng javascript, bạn có thể sử dụng một cái gì đó như ROT13 để làm xáo trộn địa chỉ email. Ví dụ: xem điều này:
http://scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/
Cá nhân, tôi thích sử dụng một hình thức liên hệ với chúng tôi và không lo lắng về các spam bots, nhưng tất nhiên tất cả phụ thuộc vào yêu cầu của bạn.
Tôi sử dụng một hàm PHP để tạo một số javascript để xuất tập lệnh khi chạy. Lưu ý rằng bạn không cần PHP để tạo JS khi chạy, bạn có thể tạo JS một lần cục bộ và sau đó bao gồm JS tĩnh trong trang của bạn.
Bạn cũng có thể sử dụng chức năng được liên kết với đoạn mã dưới đây để tự động làm xáo trộn các địa chỉ email trong một HTML đã cho (trong đó $ processContent là HTML):
$emailMatches = array();
$matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);
if($matchCount > 0) {
$emailMatches = $emailMatches[0];
foreach($emailMatches as $email) {
$replacement = createJSMailLink($email);
$processedContent = str_replace($email, createJSMailLink($email), $processedContent);
}
}
Nếu bạn đang sử dụng biểu mẫu liên hệ, bạn có thể thực hiện kỹ thuật thú vị là sử dụng tên ngẫu nhiên cho đầu vào của mình.
Ví dụ: tôi tạo một biểu mẫu liên hệ, thay vì sử dụng email làm đầu vào, tôi sẽ sử dụng liame, cùng với tên (eman) và nhận xét (tnemmoc). Các bot không thực sự biết những gì đầu vào làm, vì vậy họ chỉ coi thường chúng.
Sử dụng Zoho Creator để thiết lập một hình thức liên lạc. Phản hồi bạn nhận được sẽ được lưu trữ trên cơ sở dữ liệu mà bạn có thể truy cập trực tuyến và nó cũng sẽ được gửi qua email cho bạn.