Trang chủ Đăng nhập
Cùng chơi Army2 sv Trái Quýt, free xu, lượng...

Lần hoạt động

Diễn đàn | Tự làm Wap | Chia sẻ johncms
Tìm kiếm
Chia sẻ lên Zing twitter Google PlusView 11516
  Hướng dẫn tự viết tool leech truyện cho mọi mã nguồn
xchieclax xchieclax (SV!) [Off] [#] (06.12.2015 / 08:00)
Đang tìm người yêu
Mình sẽ hd viết tools leech truyện cho ae và không sử dụng 1 tý curl nào, chỉ có file_get_contentsput_contents, str_replace, strstr, rất đơn giản và dễ hiểu. Đầu tiên sẽ là phần leech duy nhất 1 trang đầu tiên, ko leech nhiều trang cùng lúc:

Bạn cần [Đăng nhập] để thấy link!

Để leech truyện, trước hết ace phải view mã nguồn, vd ở đây là gocvn.in. Ae vào thử 1 topic truyện view code html, view 2-3 topic và so sánh tìm những điểm giống nhau, vd có những điểm giống nhau như khi đến phần nội dung truyện sẽ đc nằm trong <div class="forumtxt">, div đấy nó bao hàm nội dung truyện, sẽ là cơ sở để ae tách riêng cái nội dung đó ra, nhưng khi view ở wap gocvn.in thì có đến 2 cái <div class="forumtxt">, vậy phải làm sao để nhận biết, ae để ý có duy nhất 1 cái <font size="4" /> ở cạnh nội dung truyện, vậy đây chính là cơ sở để bắt đầu tách truyện, vậy dấu hiệu khi kết thúc truyện là ở đâu????? Lại để ý vào phần view code, tìm đến cuối truyện thấy có </font></div><br /> là duy nhất, ok vậy đây là dấu hiệu kết thúc truyện, chú ý làm như vậy với 2-3 pages để chắc chắn đúng nhé. Khi có 2 dấu hiệu đó rồi ae có thể tách nội dung ra.

Cách tách nội dung:

Để tách nd chúng ta dùng 2 hàm strstr và str_replace, thực ra còn nhiều hàm khác cũng có chức năng như 2 hàm kia nhưng ae cứ dùng 2 cái đó đã, về sau tìm hiểu sau.
Đầu tiên chúng ta sẽ get nội dung của 1 page muốn leec, vd:
  1. $content = file_get_contents('http://gocvn.in/forum/co-ayla-cua-toi-cuc-hay_1262.html');

Như vậy source của pages truyện kia nằm trong biến $content.
như đã nói trên, dấu hiệu bắt đầu nội dung sẽ là <font size="4" /> sẽ dùng hàm này:
  1. $temp = strstr($content,'<font size="4" />');

Hàm trên sẽ cắt toàn bộ nội dung từ đầu đến <font size="4" />, nội dung từ <font size="4" /> đến hết sẽ nằm trong biến $temp. Bây giờ đến lượt tách phần cuối.

Tách phần cuối sẽ ntn:
  1. $temp1 = strstr($temp,'</font></div><br />');
  2. $noidung = str_replace($temp1,'',$temp);

Giải thích đoạn trên:

$temp1 sẽ lấy cắt nội dung từ </font></div><br /> đến hết, $noidung sẽ xoá phần thừa sau cùng trong $temp, => $noidung sẽ chứa chọn gói nội dung truyện, vậy nội dung truyện đã nằm ở $noidung. Cách tách tiêu đề truyện cũng tương tự như trên, ae có thể tách ra từ cặp thẻ <title> và save lại vào biến $tieude.

Và sau cùng là chèn vào sql

Cái này phải biết về sql, chúng ta vào myphpadmin trong cp host, ở đây mình sẽ ví dụ về leec truyện cho mã nguồn johncms, bài viết sẽ nằm trong bảng forum. Cội text sẽ chứa nội dung truyện và tiêu đề. Mình sẽ dùng hai lần hàm INSET data vào sql, lần 1 sẽ inset tiêu đề truyện, lần 2 là nội dung.
Và chọn chuyên mục để leech. Ae làm như sau:
  1. $cm=mysql_query("SELECT * FROM `forum` WHERE `type`='r'");
  2. while (($res=mysql_fetch_assoc($req))!=false) {
  3. $option .= '<option value="' . $res['id'] . '" ' . ($id==$res['id'] ? 'selected="selected"' : '') . '>' . $res['text'] . '</option>' . "\n";
  4. }

Đưa đoạn này vào khung form:
  1. <select name="id">' .
  2. '' . $option . '' .
  3. '</select>

Dùng POST['id'] để lấy tên chuyên mục, từ đó ta có thể leech đúng trỗ.
Cú pháp chèn zô sql đối với mã nguồn johncms sẽ là như sau:
  1. mysql_query("INSERT INTO `forum` SET
  2. `refid` = '$id',
  3. `type` = 't',
  4. `time` = '" . time() . "',
  5. `user_id` = '$user_id',
  6. `from` = '$login',
  7. `text` = '$tieude',
  8. `soft` = '',
  9. `edit` = '',
  10. `curators` = ''
  11. ") or exit(__LINE__ . ': ' . mysql_error());
  12. $rid = mysql_insert_id();
  13. $rid = mysql_insert_id();
  14. mysql_query("INSERT INTO `forum` SET
  15. `refid` = '$rid',
  16. `type` = 'm',
  17. `time` = '" . time() . "',
  18. `user_id` = '$user_id',
  19. `from` = '$login',
  20. `ip` = '" . core::$ip . "',
  21. `ip_via_proxy` = '" . core::$ip_via_proxy . "',
  22. `soft` = '" . mysql_real_escape_string($agn) . "',
  23. `text` = '" . $noidung . "',
  24. `edit` = '',
  25. `curators` = ''
  26. ") or exit(__LINE__ . ': ' . mysql_error());
  27. $postid = mysql_insert_id();

Trong đó $id là id của chuyên mục, $rid là id của tiêu đề. mấy cái $login, $user_id tự tìm hiểu dựa vào cột trong sql.

Trong khi chèn nếu lỗi ký tự khi hiện ra có thể dùng html_entity_decode...
Vậy là xong phần leech 1 trang truyện. Và sau đây là cách leech truyện bị phân ra nhiều trang. Cái này cũng phải view source. Tìm dấu hiệu có phân trang, ở đây vd trang gocvn. dấu hiệu có phân trang sẽ là <a class="pagenav". Ta dùng if else để xử lý cho phù hợp. Nếu tồn tại <a class="pagenav" thì lúc này leech truyện có phân trang, ta phải xử lý riêng, ngược lại nếu ko có thì chả có phân trang, ta chỉ cần dùng câu lệnh mình nói trên để get nội dung như thường.

Bây giờ nói về trường hợp có phân trang.

Vd page: Bạn cần [Đăng nhập] để thấy link!
Topic này đc phân thành 50 trang.
Cái cốt lõi ở đây là ta phải lấy đc số 50. để làm đc điều này ta bắt đầu dùng strstr cắt từ đoạn này: </font> 1</b> <a class="pagenav" đến hết. Xong ta cắt tiếp từ đoạn </center></div><br /><div class="mainblok"> đến hết, rồi dùng str_replace, xử lý như trên đầu. Chủ yếu là lấy chọn đoạn source này lưu vào biến $get:
  1. </font> 1</b> <a class="pagenav" href="/ forum/co-ayla-cua-toi-cuc-
  2. hay_1262_trang-2.html" title="C&ocirc; Ấy...L&agrave; Của T&ocirc;i! (cực hay)">2</a> <a class="pagenav" href= "/forum/co-ayla-cua-toi- cuc-hay_1262_trang-3.html" title="C&ocirc; Ấy...L&agrave; Của T&ocirc;i! (cực hay)">3</a>...<a class="pagenav" href="/forum/co-ayla-cua-toi- cuc-hay_1262_trang-50.html" title="C&ocirc; Ấy...L&agrave; Của T&ocirc;i! (cực hay)">50</a> <a class="pagenav" href="/forum/co-ayla-cua-toi- cuc-hay_1262_trang-2.html" title="C&ocirc; Ấy...L&agrave; Của T&ocirc;i! (cực hay)">»</a>

Bây giờ dùng 1 vài thuật toán nho nhỏ để tách số 50 kia ra lưu vào 1 biến
Để ý thẻ <a> chứa » luôn có 1 giá trị là trang-2 khi vào topic. Vì thế ta sẽ làm ntn:
  1. $ul = str_replace('http://gocvn.in','',$url);
  2. $ul2 = str_replace('.html','_trang-2.html',$ul);
  3. $view = '<a class="pagenav" href="'.$ul2.'" title="'.$tieude.'">»</a>';
  4. $ok = str_replace($view,'',$get);

Trong đó $url là url cần leech, $tieude ở trên.
Vậy lúc này biến $ok sẽ có giá trị:
  1. </font> 1</b> <a class="pagenav" href="/ forum/co-ayla-cua-toi-cuc-
  2. hay_1262_trang-2.html" title="C&ocirc; Ấy...L&agrave; Của T&ocirc;i! (cực hay)">2</a> <a class="pagenav" href= "/forum/co-ayla-cua-toi- cuc-hay_1262_trang-3.html" title="C&ocirc; Ấy...L&agrave; Của T&ocirc;i! (cực hay)">3</a>...<a class="pagenav" href="/forum/co-ayla-cua-toi- cuc-hay_1262_trang-50.html" title="C&ocirc; Ấy...L&agrave; Của T&ocirc;i! (cực hay)">50</a>

Vâng, số 50 sát đít kia, lấy ra quá dễ phải ko?
Đo độ dài của chuỗi trong biến $ok, lấy độ dài đó trừ đi khoảng 15 và lưu vào biến $cdnew.
Chuỗi trên dài 436 ký tự, trừ 15 => $cdnew = 421
Ta dùng hàm mb_substr để cắt chuỗi như sau:
$cd = mb_substr($ok,$cdnew,15);
Lúc này $cd sẽ đc như sau:
  1. ực hay)">50</a>

Tách số 50 ra:
  1. $ok1 = str_replace('</a>','',$cd);
  2. $tach = strstr($ok1,>);
  3. $so50 = str_replace('>','',$tach);

Đã có số 50 trong $so50
Lúc này dùng vòng for:
  1. for($i=1;$i<=$so50;$i++){
  2. $urlnew = str_replace('.html','_trang-'.$i.'.html',$url);
  3. $contentnew = file_get_contents($urlnew);
  4. ...code đoạn này làm y trang bên trên
  5. }

Như vậy là xong

__________
Tin học như cơm bình dân

Bài viết liên quan:

0963128512 0963128512 [Off] [#] (31.12.2015 / 15:22)
xchieclax Đã viết Bạn cần [Đăng nhập] để thấy link! (06.12.2015 / 08:00)
Mình sẽ hd viết tools leech truyện cho ae và không sử dụng 1 tý curl nào, chỉ có file_get_contents và put_contents, str_replace, strstr, rất đơn giản và dễ hiểu. Đầu tiên sẽ là phần leech duy nhất 1 t
Huhu
xchieclax xchieclax (SV!) [Off] [#] (31.12.2015 / 16:20)
Đang tìm người yêu
tại sao con khóc....

__________
Tin học như cơm bình dân

0963128512 0963128512 [Off] [#] (31.12.2015 / 16:33)
Co đã cố nhưng vấn phọt lỗi. . . Tóm lạ là cùi đéc k.b.làm :
xchieclax xchieclax (SV!) [Off] [#] (31.12.2015 / 16:55)
Đang tìm người yêu
không biết mới phải tập làm, hi

__________
Tin học như cơm bình dân

0963128512 0963128512 [Off] [#] (01.01.2016 / 07:11)
xchieclax Đã viết Bạn cần [Đăng nhập] để thấy link! (31.12.2015 / 16:55)
không biết mới phải tập làm, hi
Hd mk phat. vd:
  1. <script type="text/javascript" src="http://xtingame.com/Share-Like-FB.js"></script></center> <div class="forumtxt"><br /> Hôm nay là ngà y thi cuối cùng của kì há»c thứ hai, năm ba, lá»›p đại há»c của Mai tổ chức tiệc liên hoan. Sau hôm nay, sẽ có những ngÆ°á»i chuẩn bị Ä‘i
thi tach tu <div class... br/> đi ak, ma tat cả code tren mam trong 1 thu muc rieng biet phai k.
xchieclax xchieclax (SV!) [Off] [#] (01.01.2016 / 08:41)
Đang tìm người yêu
Tất cả code trên, bạn copy vào thành 1 file.php là có tool lech cho riêng mình rồi nhé

__________
Tin học như cơm bình dân

0963128512 0963128512 [Off] [#] (01.01.2016 / 09:29)
xchieclax Đã viết Bạn cần [Đăng nhập] để thấy link! (01.01.2016 / 08:41)
Tất cả code trên, bạn copy vào thành 1 file.php là có tool lech cho riêng mình rồi nhé
Làm júp phat dj. Thuong cho chot
0963128512 0963128512 [Off] [#] (01.01.2016 / 09:39)
Đưa đoạn này vào khung form:
<?php
<select name="id">' .
'' . $option . '' .
'</select>
?>
[help]
Dùng POST['id'] để lấy tên chuyên mục, từ đó ta có thể leech đúng trỗ. [hđ]
Cú pháp chèn zô sql đối với mã nguồn johncms sẽ là như sau:[hđ]
<?php
mysql_query("INSERT INTO `forum` SET
`refid` = '$id',
`type` = 't',
`time` = '" . time() . "',
`user_id` = '$user_id',
`from` = '$login',
`text` = '$tieude',
`soft` = '',
`edit` = '',
`curators` = ''
") or exit(__LINE__ . ': ' . mysql_error());
$rid = mysql_insert_id();
$rid = mysql_insert_id();
mysql_query("INSERT INTO `forum` SET
`refid` = '$rid',
`type` = 'm',
`time` = '" . time() . "',
`user_id` = '$user_id',
`from` = '$login',
`ip` = '" . core::$ip . "',
`ip_via_proxy` = '" . core::$ip_via_proxy . "',
`soft` = '" . mysql_real_escape_string($agn) . "',
`text` = '" . $noidung . "',
`edit` = '',
`curators` = ''
") or exit(__LINE__ . ': ' . mysql_error());
$postid = mysql_insert_id();
?>
Trong đó $id là id của chuyên mục, $rid là id của tiêu đề. mấy cái $login, $user_id tự tìm hiểu dựa vào cột trong sql.
KhanhNTD KhanhNTD [Off] [#] (14.02.2018 / 13:51)
Xin chào. Hiện mình có phát triển wordpress theme BOX Truyện kèm plugin auto leech truyện từ mọi web truyện. Các bạn có thể tham khảo tại đây ạ: Bạn cần [Đăng nhập] để thấy link!
  Tổng số: 10

Lọc theo tác giả
Xem chủ để ngoại tuyến (Offline)

Trong diễn đàn

Sắp xếp theo thứ tự từ trên xuống
1 / 7