nhox49
Giám sát
Chia Sẻ Nào AE!
10 tháng trước
Cụ thể như thế nào thì mọi người cùng đón xem nhóe..
Code đợt trước mình làm thì nó có phụ thuộc vào code của mình (Đến từ test.chiase123.fun) nhưng mà tên miền này sắp hết cmn hạn và tất nhiên là nó chỉ free năm đầu cho mình thôi còn những năm sau đó phải bỏ tiền ra gia hạn, nhưng tên miền đó mình cũng không làm gì nên mình quyết định là không gia hạn nữa mặc dù là nó có hơn 20k/năm thôi. Quay lại chủ đề chính nhé, code lần này mình lên cho mọi người là code leech sử dụng tất cả mọi thứ đến từ máy chủ của SMM bao gồm function cũng như những filter để lọc nội dung một cách hoàn hảo nhất. Mà công nhận là làm như thế này nó ổn định hơn cái code trước đó của mình.
Thông tin chi tiết về em nó:
Sử dụng code này sẽ cần tạo 2 file, một file dùng để lấy nội dung từ trang cần leech rồi bóc tách nội dung và chuyển đổi HTML sang bbcode.
File còn lại dùng để chứa form, cũng như xử lý những thứ còn lại sau khi leech thành cmn công.
Lần này mình sẽ hướng dẫn chi tiết cho những bạn ít biết về javascript/jquery nên sẽ dễ áp dụng hơn ạ.
Cách áp dụng vào web của bạn
Đầu tiên cũng là trên hết, các bạn vào trong thư mục assets rồi vào tiếp thư mục api (Nếu chưa có thì tạo) rồi tạo tiếp cho mình thư mục leech (Mình làm nhiều vậy chủ yếu là để đỡ lộn thôi :D) rồi tạo cho mình một tập tin bất kì (Ví dụ: Mình là mình tạo tập tin tên vtc-news)
Giải thích xíu: Tập tin này dùng để xử lý link cần leech và xử lý tiêu đề nội dung các kiểu con đà điểu.
Giờ hãy Copy code này rồi gián vào rồi lưu lại nha
Tiếp theo, bạn trở lại trình duyệt tập tin rồi vào thư mục có chứa file đăng bài (Ví dụ mình xài template Forew thì sẽ là _admin/article/) rồi cũng tạo cho mình một thư mục tên là leech, sau đó tạo 1 file bất kì, ví dụ mình tạo vtc-news. Sau đó bạn copy code đăng bài của bạn gián vào thư mục ấy, nếu là template forew thì nó là file /_admin/article/created nha, bạn vào file đó copy code rồi gián vào file vtc-news vừa tạo :3
Tiếp theo, bạn tìm trong code (Ở dòng 31) có cái dòng giống vậy nè <form name="form" action="" method="post"> thì sửa nó lại thành <form name="form" action="" method="post" style="display:none;border-top: 0px" id="step1">
- Làm thế này dùng để thu gọn cái form lại nhìn cho gọn gàng đó mà :3
Tiếp theo, trên dòng đó bạn post code này:
Đây là form dùng để post link thôi, có thể sửa lại theo ý thích nhưng mà đừng sửa mấy cái input của mình nhé.
Tiếp theo, bạn gián code này ở cuối file (Nằm trên {{block('footer')}} nha.)
Vậy là coi như chúng ta đã hoàn cmn thành các bước để leech bài rồi :D , Tool mẫu của mình là dùng để leech bài từ vtc.vn nha, bạn tham khảo xong rồi có thể viết lại một tool để leech trang khác được rồi :3
Cuối cùng, mình cũng làm sẵn 1 file demo khác: https://missu.sacmau.mobi/tool/leech-vtc-news các bạn có thể qua đây test trước ^^ à, cái này dùng để test thôi chứ không đăng bài lên blog của mình đâu nha.
UPDATE: Code bên kia mình đã xóa đi rồi, nó chỉ hơn code này là load rss và tự upload ảnh lên IMGBB thôi, hiện tại mình thấy cũng không ai xài và sắp tới tên miền kia hết hạn thì cũng không còn xài được nữa. Tuy nhiên, trong thời gian này thì vẫn có thể xài được, mình sẽ xóa bài kia khi tên miền hết hạn. Cảm ơn bạn đã đọc hết bài viết của mình, thân ái và quyết thắng @@
Update: Dựa trên code mình đã share trước đó, bây giờ khi mình rảnh mình có thể dùng tool view-source mình đã share và xem nguồn trang nhacdj.vn rồi lấy một số thẻ HTML cần thiết. Kết quả là mình có thể leech nhacdj.vn, bởi vì trang web này không có rss nên mình không load được nhưng hiện tại chúng ta có thể lấy link trực tiếp từ trang web. Demo: https://missu.sacmau.mobi/tool/leech-nhacdj-vn
[TOP]
[JQUERY] Code tool leech sử dụng twig và jquery
Chao xìn quý zị nha :D mình lại lên một bài ăn hại như xưa thôi, cũng không có gì to tát nhưng mình lên bài này vì cái code trước đó có phụ thuộc vào bên ngoài quá nên bài này mình lên tất nhiên là không còn phụ thuộc vào bên ngoài như trước nữa..Cụ thể như thế nào thì mọi người cùng đón xem nhóe..
Code đợt trước mình làm thì nó có phụ thuộc vào code của mình (Đến từ test.chiase123.fun) nhưng mà tên miền này sắp hết cmn hạn và tất nhiên là nó chỉ free năm đầu cho mình thôi còn những năm sau đó phải bỏ tiền ra gia hạn, nhưng tên miền đó mình cũng không làm gì nên mình quyết định là không gia hạn nữa mặc dù là nó có hơn 20k/năm thôi. Quay lại chủ đề chính nhé, code lần này mình lên cho mọi người là code leech sử dụng tất cả mọi thứ đến từ máy chủ của SMM bao gồm function cũng như những filter để lọc nội dung một cách hoàn hảo nhất. Mà công nhận là làm như thế này nó ổn định hơn cái code trước đó của mình.
Thông tin chi tiết về em nó:
Sử dụng code này sẽ cần tạo 2 file, một file dùng để lấy nội dung từ trang cần leech rồi bóc tách nội dung và chuyển đổi HTML sang bbcode.
File còn lại dùng để chứa form, cũng như xử lý những thứ còn lại sau khi leech thành cmn công.
Lần này mình sẽ hướng dẫn chi tiết cho những bạn ít biết về javascript/jquery nên sẽ dễ áp dụng hơn ạ.
Cách áp dụng vào web của bạn
Đầu tiên cũng là trên hết, các bạn vào trong thư mục assets rồi vào tiếp thư mục api (Nếu chưa có thì tạo) rồi tạo tiếp cho mình thư mục leech (Mình làm nhiều vậy chủ yếu là để đỡ lộn thôi :D) rồi tạo cho mình một tập tin bất kì (Ví dụ: Mình là mình tạo tập tin tên vtc-news)
Giải thích xíu: Tập tin này dùng để xử lý link cần leech và xử lý tiêu đề nội dung các kiểu con đà điểu.
Giờ hãy Copy code này rồi gián vào rồi lưu lại nha
TWIG
{% spaceless %} {# -- Sử dụng spaceless để khi xuất file ra không bị xuống dòng quá nhiều lần --#}
{% do set_header('content-type: application/json') %} {# -- [Dòng này dùng để cho biết, file này là file JSON] -- #}
{% set url = POST['url'] %} {# -- [Dòng này dùng để lấy URL mà bạn vừa gửi đến] -- #}
{% if 'https://vtc.vn/' in url %} {# -- [Check xem thử URL vừa rồi có phải đến từ vtc.vn hay không, nếu phải thì nó mới xử lý] -- #}
{% set data = get_content_from(url)|raw %} {# -- [Lấy nội dung của URL] -- #}
{% set title = data|split('<title>')[1]|split('</title>')[0] %} {# -- [Cắt chuỗi để lấy tiêu đề bài đăng] -- #}
{% set content = data|
split('<div class="content-wrapper pt5 mt5 font18 gray-31 bor-4top-e5 lh-1-5">')[1]|
split('<div class="div-interaction prevent-select mb10 mt10 pd5">')[0]|raw %} {# -- [Cắt chuỗi để lấy nội dung bài đăng] -- #}
{% set thumbnail = data|split('<meta property="og:image:secure_url" itemprop="thumbnailUrl" content="')[1]|split('"')[0] %} {# -- [Lấy ảnh đại diện bài viết] -- #}
{% set keyword = data|split('<meta name="keywords" content="')[1]|split('"')[0] %} {# -- [Lấy keywords của URL] -- #}
{% set description = data|split('<meta name="description" content="')[1]|split('"')[0] %} {# -- [lấy mô tả ngắn của URL] -- #}
{% set author = data|split('<meta property="dable:author" content="')[1]|split('"')[0] %} {# -- [Lấy tên người đăng, cái này get cho vui thôi chứ không xài] -- #}
{% set content = content|
preg_replace('/<img(.*?)data-src="(.*?)"(.*?)>/', "
"~'[center][img]$2[/img][/center]'~"
")|
preg_replace('/<em>(.*?)</em>/', '[i]$1[/i]')|
preg_replace('/<a(.*?)href="https://vtc.vn(.*?)"(.*?)>(.*?)</a>/', '$4')|
preg_replace('/<a(.*?)href="(.*?)"(.*?)>(.*?)</a>/', '[url=$2]$4[/url]')|
preg_replace('/<strong>(.*?)</strong>/', '[b]$1[/b]')|
preg_replace('/<script(.*?)>(.*?)</script>/', '')|
preg_replace('/<br />/', "
")|
preg_replace('/<span class="uppercase bold">(.*?)</span>/', '[right]$1[/right]')|
preg_replace('/<p(.*?)>(.*?)</p>/', "
$2
")|
preg_replace('/<div(.*?)>(.*?)</div>/', "
$2
")|
preg_replace('/<p>(.*?)</p>/', "
$1
")|raw
%} {# -- [Chuyển HTML sang Bbcode, bạn có thể sửa nó thành markdown cũng được] -- #}
{% set content = strip_tags(content|raw)|replace({
'(VTC News) -': '',
})|raw %} {# -- [Xóa dòng cap đầu tiên của VTC, đầu bài nào của họ cũng có chữ này cả] -- #}
{% set response = {
'title' : title,
'keyword' :keyword,
'description':description,
'author' :author,
'thumbnail' :thumbnail,
'content' :content
} %} {# -- [Xuất những thứ vừa lấy được thành mảng, để xuất ra] -- #}
{% endif %}
{% if response %} {# -- [Nếu mãng phía trên không NULL thì sẽ xuất mảng một lần nữa] -- #}
{% set response = {
'url' : url,
'status' : 'true',
'response':response,
} %}
{% else %} {# -- [Nếu mãng là NULL thì sẽ trả về status STT là false] -- #}
{% set response = {
'url' : url,
'status' : 'false',
'response':'',
} %}
{% endif %}
{% endspaceless %}{{json_encode(response)|raw}} {# -- [Encode mảng vừa nãy rồi trả về kết quả.] -- #}
Tiếp theo, bạn trở lại trình duyệt tập tin rồi vào thư mục có chứa file đăng bài (Ví dụ mình xài template Forew thì sẽ là _admin/article/) rồi cũng tạo cho mình một thư mục tên là leech, sau đó tạo 1 file bất kì, ví dụ mình tạo vtc-news. Sau đó bạn copy code đăng bài của bạn gián vào thư mục ấy, nếu là template forew thì nó là file /_admin/article/created nha, bạn vào file đó copy code rồi gián vào file vtc-news vừa tạo :3
Tiếp theo, bạn tìm trong code (Ở dòng 31) có cái dòng giống vậy nè <form name="form" action="" method="post"> thì sửa nó lại thành <form name="form" action="" method="post" style="display:none;border-top: 0px" id="step1">
- Làm thế này dùng để thu gọn cái form lại nhìn cho gọn gàng đó mà :3
Tiếp theo, trên dòng đó bạn post code này:
HTML
<div class="w3-border w3-border-blue-grey w3-white w3-margin-top">
<div class="phdr w3-blue-grey w3-padding"><i class="fa fa-copy"></i> Leech VTC News</div>
<div class="menu">
<div id="stt"></div>
<div class="w3-row">
<div class="w3-col m8 w3-padding"><input id="url" type="url" value="" class="w3-input w3-border"></div>
<div class="w3-col m4 w3-padding"><input type="submit" value=" Leech Bài Viết " class="w3-button w3-grey w3-block"></div>
</div></div>
</div>
</div>
Đây là form dùng để post link thôi, có thể sửa lại theo ý thích nhưng mà đừng sửa mấy cái input của mình nhé.
Tiếp theo, bạn gián code này ở cuối file (Nằm trên {{block('footer')}} nha.)
HTML
<!-- Nếu có thư viện này rồi thì xóa đi nhen -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<!-- Code JS -->
<script>
$('[type="submit"]').click( function() { //Dòng này là khi bấm submit nè
var url = $('#url').val(); // Lấy url mà bạn đã nhập vào
$('#stt').html('URL: '+url); // Hiển thị link bạn vừa nhập phía trên form
$.post("/assets/api/leech/vtc-news",{url:url}, function(response){ // Gửi link đến file xử lý dữ liệu
$('#step1').slideDown(); // Hiển thị form đăng bài ra, form này lúc đầu chúng ta đã thu lại cho gọn rồi.
var out = response.response; // Lấy nội dung đã qua xử lý
$('[name="title"]') .val(out.title); // Thêm nội dung vào input, ví dụ <input name="title" .. mấy dòng dưới cũng tương tự thôi
$('[name="keywords"]') .val(out.keyword);
$('[name="description"]') .val(out.description);
$('[name="thumbnail"]') .val(out.thumbnail);
$('[name="author"]') .val(out.author);
$('#comment-comment') .html(out.content);
$('title') .text("Leech bài viết: "+out.title); // Thay tiêu đề của file gốc thành tiêu đề bài viết
$('#stt') .html('STT: '+response.status+'<br/>NAME: '+out.title); // Hiển thị tên bài viết cũng như STT trên đầu form, nếu STT là false thì leech thất bại còn nếu là true thì thành công.
});
});
</script>
Vậy là coi như chúng ta đã hoàn cmn thành các bước để leech bài rồi :D , Tool mẫu của mình là dùng để leech bài từ vtc.vn nha, bạn tham khảo xong rồi có thể viết lại một tool để leech trang khác được rồi :3
Cuối cùng, mình cũng làm sẵn 1 file demo khác: https://missu.sacmau.mobi/tool/leech-vtc-news các bạn có thể qua đây test trước ^^ à, cái này dùng để test thôi chứ không đăng bài lên blog của mình đâu nha.
UPDATE: Code bên kia mình đã xóa đi rồi, nó chỉ hơn code này là load rss và tự upload ảnh lên IMGBB thôi, hiện tại mình thấy cũng không ai xài và sắp tới tên miền kia hết hạn thì cũng không còn xài được nữa. Tuy nhiên, trong thời gian này thì vẫn có thể xài được, mình sẽ xóa bài kia khi tên miền hết hạn. Cảm ơn bạn đã đọc hết bài viết của mình, thân ái và quyết thắng @@
Update: Dựa trên code mình đã share trước đó, bây giờ khi mình rảnh mình có thể dùng tool view-source mình đã share và xem nguồn trang nhacdj.vn rồi lấy một số thẻ HTML cần thiết. Kết quả là mình có thể leech nhacdj.vn, bởi vì trang web này không có rss nên mình không load được nhưng hiện tại chúng ta có thể lấy link trực tiếp từ trang web. Demo: https://missu.sacmau.mobi/tool/leech-nhacdj-vn