Nội dung bài viết
Đăng ký học lập trình C++
Tại STDIO bạn được dạy nền tảng lập trình tốt nhất.
Đăng ký học
Marketing và chi tiết hơn là Online Marketing về cốt lõi vẫn là Marketing đã hiển hiện từ xa xưa cho đến ngày nay, bên cạnh những Marketing trong sáng và chính thống nhằm tạo ra giá trị cho người dùng cuối thì không thiếu những chiêu trò Marketing bẩn làm cho chất lượng của cuộc sống bị xuống cấp. Có thể nói Like ẩn là một trong các kỹ thuật lừa đảo con người, vậy nên không thể gọi nó là marketing nữa.

Giới thiệu

Bài viết nêu lên quan điểm về sản phẩm của tôi và nói về phương pháp đánh lừa người sử dụng nhằm nâng cao tinh thần cảnh giác cho người dùng trong các hoạt động liên quan đến máy tính. Người dùng cuối có thể vào 1 trang web và không hề có mong muốn LIKE trang đó, nhưng đôi khi lại nhận ra rằng mình đã LIKE khi nào và bằng cách nào cũng không hiểu được. Đôi lúc trang web đó bạn vô tình vào và đó là trang web không trong sạch và bạn vô tình nhấn vào một điểm nào đó trên trang web, bạn đã vô tình LIKE trang web đó và khách hàng từ Facebook của bạn có thể nhận xét không tốt về bạn.

Tiền đề bài viết

Sau 1 buổi cafe với 1 người học trò làm về Online Marketing (OM) chính thống, tôi được anh chia sẻ các vấn đề về OM và các kỹ thuật đánh lừa người dùng cuối, và sau khi nghe được sự bức xúc của anh ta, tôi mong muốn chia sẻ lại vấn đề này để giúp người dùng cuối phòng tránh được vấn đề trên và đề xuất OM trong sạch vì tôi luôn tin rằng, chất lượng sản phẩm quyết định tất cả. Việc thực hiện 1 hành vi mà người dùng không biết được nhằm mang lại lợi ích cho bản thân chính là hành vi của lừa đảo.

Đối tượng hướng đến

Dành cho việc tìm hiểu 1 số phương pháp đánh lừa trong việc ứng dụng các kỹ thuật đơn giản, và ứng dụng nó vào các mục đích tốt hơn. Các vấn đề về CSS, HTML, JavaScript bạn có thể tham khảo thêm một số bài viết trong STDIO.

Ý tưởng

Cho LIKE button của Facebook di chuyển theo con trỏ chuột của người dùng trên trình duyệt web, tuy nhiên LIKE button của Facebook phải ẩn (trong suốt) để người dùng không nhìn thấy được, và khi người dùng click vào bất kỳ vị trí nào trên trang web, thì xem như họ đã thực hiện hành động LIKE trang nhưng họ không hề hay biết điều này vì nút LIKE trong suốt.

Nâng cấp ý tưởng hơn, ta sẽ kiểm tra xem users đó đã đăng nhập vào Facebook chưa và đã LIKE trang chưa, nếu thỏa 2 điều kiện là ĐÃ ĐĂNG NHẬP và CHƯA LIKE TRANG thì ta sẽ kích hoạt tính năng này.

Hiện thực

Như thông thường, ta cần tích hợp Facebook SDK vào trang web và đặt nút LIKE ở những vị trí mong muốn, bây giờ, ta sẽ đặt nút LIKE vào 1 thẻ div có khả năng di chuyển theo con trỏ chuột.

Phần HTML dựng trang

<!DOCTYPE html>
<html>
	<body>
		<div id="id_theShameBox" class="theShameBox">[LIKE]</div>
	</body>
</html>

Bạn thay thế nút LIKE của Facebook cho chuỗi [LIKE] hoặc bất kỳ phần tử nào mà bạn muốn. Thêm id="id_theShameBox" để điều khiển được phần tử này. Thuộc tính trong suốt và khả năng di chuyển tự do sẽ được khởi tạo bằng CSS trong theShameBox class.

Phần CSS để cho phép thả tự do thẻ chứa nút LIKE

<style>
	body .theShameBox{
		width:50px;
		height:20px;
		line-height:20px;
		background:#279;
		color:#fff;
		text-align:center;
		font-size:14px;
		cursor:context-menu;
		
		/* ROOT OF SHAME */
		position:absolute;
		top:0;
		left:0;
		opacity:1.0;
	}
</style>

Từ đoạn /* ROOT OF SHAME */ là đoạn cho phép thả tự do position:absolute và thuộc tính quan trọng để đánh lừa thị giác đó là opacity:1.0 (và chúng ta cần điều chỉnh thuộc tính này có giá trị là 0.0 (trong suốt hoàn toàn) và đây là nguồn gốc của sự bất công với người sử dụng cuối.

Phần JavaScript

Điều khiển việc thay đổi top và left của thẻ theShameBox dựa trên việc lấy tọa độ đang di chuyển của chuột

<script>
	function init()
	{
		if (window.Event)
		{
			document.captureEvents(Event.MOUSEMOVE);
		}
		document.onmousemove = handleMouseMove;
	}
	
	function handleMouseMove(e) {
		var x = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
		var y = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);	
		
		var node = document.getElementById("id_theShameBox");
		node.style.top = (y - 10) + "px";
		node.style.left = (x - 25) + "px";
	}
	
	window.onload = init;
</script>

Như vậy, chỉ cần người dùng click chuột, thì tay họa sẽ xảy ra, nếu đó là 1 fanpage trong sạch, minh bạch và trung lập so với sản phẩm mà người sử dụng cuối đang cung cấp, thì không vấn đề gì lớn lao, ngược lại, đúng là thảm họa vì có thể bạn vô tình LIKE page của đối thủ, hoặc đó không phải là trang web trong sáng lắm sẽ làm mất uy tín của họ, mặc dù rằng họ chỉ vô tình nhấn vào trang đó.

Codes hoàn chỉnh

<!DOCTYPE html>
<html>
	<head>
		<style>
			body .theShameBox{
				width:50px;
				height:20px;
				line-height:20px;
				background:#279;
				color:#fff;
				text-align:center;
				font-size:14px;
				cursor:context-menu;
				
				/* ROOT OF SHAME */
				position:absolute;
				top:0;
				left:0;
				opacity:1.0;
			}
		</style>
		
		<script>
			function init()
			{
				if (window.Event)
				{
					document.captureEvents(Event.MOUSEMOVE);
				}
				document.onmousemove = handleMouseMove;
			}
			
			function handleMouseMove(e) {
				var x = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
				var y = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);	
				
				var node = document.getElementById("id_theShameBox");
				node.style.top = (y - 10) + "px";
				node.style.left = (x - 25) + "px";
			}
			
			window.onload = init;
		</script>
		
	</head>
	<body>
		<div id="id_theShameBox" class="theShameBox">[LIKE]</div>
	</body>
</html>

Xem thử Demo

LIÊN KẾT DEMO

Nâng cao

Với thiết kế như trên, đó là dao 2 lưỡi bởi vì mỗi khi người sử dụng vào web chúng ta thì nó vẫn hiển thị mục LIKE đó, nếu họ đã LIKE rồi và tiến hành nhấn lần nữa, thì nó sẽ là UN-LIKE. Mục tiêu đề ra là ta phải kiểm tra được người dùng đã LIKE page chưa, để làm được điều này, ta phải dựa vào Facebook SDK, giúp ta truy vấn các thông tin người dùng như đã LIKE page hoặc chưa. Điều đáng mừng là Facebook đã chặn đứng khả năng này, để sử dụng được tính năng này ta cần Facebook kiểm duyệt quyền user_likes cho Facebook App của ta, và họ kiểm duyệt rất khắt khe.

Có 1 cách thức không toàn vẹn, nhưng có thể tạm thay thế được phương pháp trên. Facebook hỗ trợ phương thức sau nhằm phát hiện người dùng (trigger) đã nhấn vào LIKE hoặc UN-LIKE.

FB.Event.subscribe('edge.create', function(url, html_element) {
	console.log('LIKED');
});

FB.Event.subscribe('edge.remove', function(url, html_element) {
	console.log('UN-LIKED');
});

Từ ý tưởng này, nếu người dùng nhấn vào LIKE lần đầu tiên, ta sẽ lưu trữ lại các thông tin có thể dùng để kiểm tra người dùng, bao gồm địa chỉ IP, hoặc lưu trên máy người dùng 1 cookie/localStorage rằng người dùng đã nhấn vào LIKE để lần sau họ vào web sẽ không thực thi tính năng LIKE ẩn nữa.

Phương pháp này vẫn là con dao 2 lưỡi, vì nếu là người dùng đã LIKE trang web ta từ trước, thì ở lần đầu tiên, ta không đủ dữ liệu để biết được họ đã LIKE hoặc chưa, và ta sẽ mất 1 lượt LIKE thật sự, nhưng ở lần LIKE thứ 2, ta đã đủ cơ sở để nắm được thông tin người dùng đã LIKE hay chưa.

Nếu Facebook duyệt cho bạn quyền user_likes, bạn chỉ cần luôn truy vấn người dùng đã LIKE chưa thông qua

var pageID = "ID_FACEBOOK_PAGE_CUA_BAN";

FB.api('/me/likes/' + pageID, function(response) {
    console.log(response.data);
});

Ngoài ra, nếu có thắc mắc, bạn có thể liên hệ La Kiến Vinh để trao đổi thêm.

Lời kết

Tôi không dành nhiều thời gian cho vấn đề này, nhưng muốn mô tả lại thiết kế này để các bạn có thể hình dung được cách thức mà người khác làm để mở rộng hơn về ứng dụng, tư duy, hy vọng bạn sẽ dùng nó vào mục đích tốt.

Công nghệ và các đặc tính của nó vẫn luôn hiển hiện 2 luồng bao gồm lợi ích và rủi ro, nếu bạn nắm được sức mạnh, hy vọng bạn hãy dùng sức mạnh đó cho việc xây dựng.

THẢO LUẬN