Zacznijmy od razu od głównego kodu skryptu:

#!/usr/bin/perl

# skrypt Which-forum.pl
# (c) 2010 Alexandr A Alexeev, http://website/

użyj ścisłego;

# skomentowane linie - dla ścisłości
# jeśli zadaniem jest zbieranie statystyk silnika, zostaw to tak, jak jest
# jeśli tworzysz listę forów - odkomentuj

moje $dane;
$data .= $_while (<> ) ;

# sprawdź ile kosztowało Powered by phpBB bez linku w stopce
wydrukuj „phpbb \N"
jeśli ($dane =~ /]+href="[^"]*http:\/\/(?:www\.)?phpbb\.com\/?"[^>]*>phpBB/i Lub
# $data =~ /viewforum\.php\?[^""]*f=\d+/i lub
$data =~ /phpBB\-SEO/i lub
$dane =~ /) ;
wydrukuj „ipb \N"
jeśli ($dane =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i Lub
$dane =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?"[^>]*>Invision Power Board/i Lub
$dane =~ /

/I Lub
$dane =~ /index\.php\?[^""]*showforum=\d+/i) ;
wydrukuj „vbiuletyn \N"
jeśli ($dane =~ /Powered by:?[^<]+vBulletin[^<]+(?:Version)?/i Lub
$dane =~ /) ;
wydrukuj „smf \N"
jeśli ($dane =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?"[^>]*>Obsługiwane przez SMF/i Lub
$dane =~ /index\.php\?[^""]*board=\d+\.0/i) ;
wydrukuj „punbb \N"
jeśli ($dane =~ /]+href="[^"]*http:\/\/(?:(?:www\.)?punbb\.org|punbb\.informer\.com)\/?"[^>]*> PunBB/i) ; #Lub
# $data =~ /viewforum\.php\?[^""]*id=\d+/i);
wydrukuj „fluxbb \N"
# if($data =~ /viewtopic\.php\?id=\d+/i lub
jeśli ( $dane =~ /]+href="http:\/\/(?:www\.)fluxbb\.org\/?"[^>]*>FluxBB/i) ;
wydrukuj „exbb \N"
jeśli ($dane =~ /]+href="[^"]*http:\/\/(?:www\.)?exbb\.org\/?"[^>]*>ExBB/i) ; # Lub
# $data =~ /forums\.php\?[^""]*forum=\d+/i);
wydrukuj „yabb \N"
jeśli ($dane =~ /]+href="[^"]*http:\/\/(?:www\.)?yabbforum\.com\/?"[^>]*>YaBB/i Lub
$data =~ /YaBB\.pl\?[^""]*num=\d+/i ) ;
wydrukuj „dleforum \N"
jeśli ($dane =~ /\(Obsługiwane przez forum DLE\)<\/title>/I Lub
$dane =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*">Forum DLE<\/a>/I) ;
wydrukuj „ikonboard \N"
jeśli ($dane =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/i Lub
$dane =~ /
jeśli ($dane =~ /
# if($data =~ /forums\.php\?fid=\d+/i lub
# $data =~ /topic\.php\?fid=\d+/i lub
jeśli ($dane =~ /]+href="http:\/\/(?:www\.)?flashbb\.net\/?"[^>]*>FlashBB/i) ;
wydrukuj „stokesit \N"
# if($data =~ /forum\.php\?f=\d+/i lub
jeśli ($dane =~ /]+href="http:\/\/(?:www\.)?stokesit\.com\.au\/?"[^>]*>[^\/]*Stokes IT/i) ;
wydrukuj „podium \N"
# if($data =~ /topic\.php\?t=\d+/i lub
jeśli ($dane =~ /]+href=[""]?http:\/\/(?:www\.)?sopebox\.com\/?[""]?[^>]*>Podium/i) ;
wydrukuj „usebb \N"
# if($data =~ /forum\.php\?id=\d+/i lub
jeśli ($dane =~ /]+href="http:\/\/(?:www\.)?usebb\.net\/?"[^>]*>UseBB/i) ;
wydrukuj „wrforum \N"
# if($data =~ /index\.php\?fid=\d+/i lub
jeśli ($dane =~ /]+href="http:\/\/(?:www\.)?wr\-script\.ru\/?"[^>]*>WR\-Forum/i) ;
wydrukuj „yetaotherforumnet \N"
if ($data =~ /Jeszcze inne forum\.net/i lub
$dane =~ /default\.aspx\?g=posts&t=\d+/i) ;

Ten i inne skrypty wspomniane w poście znajdziesz w tym archiwum.

Scenariusz które-forum.pl sprawdza kod strony HTML, czy zawiera sygnatury silnika forum. Użyliśmy podobnej techniki podczas definiowania WordPressa i Joomli, ale jest kilka różnic. Po pierwsze, sam skrypt nie ładuje kodu strony, ale czyta go ze standardowego wejścia lub pliku przekazanego jako argument. Dzięki temu można raz pobrać stronę, na przykład za pomocą wget, a następnie przepuścić ją przez kilka analizatorów, jeśli mamy więcej niż jeden. Po drugie, w tym skrypcie obecność sygnatury jest w 100% oznaką silnika. Ostatnim razem obecność podpisu tylko dodała wagę odpowiedniemu silnikowi, a silnik o największej masie „wygrał”. Uznałem, że w tym przypadku takie podejście tylko niepotrzebnie skomplikowałoby kod.

Aby przetestować skrypt, przeprowadziłem pewne badania. Stworzyłem listę kilku tysięcy forów i każde z nich przepuściłem w swoim skrypcie, ustalając w ten sposób procent odpowiedzi programu i popularność poszczególnych silników.

Aby uzyskać listę forów, użyłem mojego parsera Google. Wyszukiwarka prośby typu

strona:forum.*.ru
strona:dyskusja.*.ru
strona:board.*.ru
strona:smf.*.ru
strona:phpbb.*.ru
....

i tak dalej. Pełny kod generatora zapytań znajdziesz w pliku gen-forumsearch-urls.pl. Oprócz Zone.ru używano również .su .ua .kz i .by. Ostatnim razem przeprowadzenie takiego badania było trudne, ponieważ witryny WordPress i Joomla nie mają takich podpisów w adresie URL. Katalogi takie jak cmsmagazine.ru/catalogue/ nie zapewniają wystarczającej wielkości próby. Co to jest 600 witryn Drupal?

Muszę przyznać, że wyniki eksperymentu mnie rozczarowały. Spośród 12 590 zbadanych lokalizacji silnik udało się zidentyfikować jedynie w 7 083, czyli tylko w 56% przypadków. Może nie wziąłem pod uwagę jakiegoś silnika? Czy to prawda, że ​​na połowie forów zainstalowano Bitrix? A może powinienem był poświęcić więcej czasu na szukanie podpisów? Ogólnie rzecz biorąc, wymagane są tutaj dodatkowe badania.

Wśród 56% pomyślnie zidentyfikowanych silników, zgodnie z oczekiwaniami, najpopularniejsze były IPB (31%), phpBB (26,6%) i vBulletin (26,5%)

Za nimi, z dużym opóźnieniem, plasują się SMF (5,8%) i DLEForum (5,3%). Mój ulubiony punBB znalazł się dopiero na 6. miejscu (1,64%). Nie radzę zbytnio wierzyć tym liczbom (podają, że co trzecie forum w RuNet działa na IPB), ale pewne wnioski można oczywiście wyciągnąć.

Przykładowo, jeśli zamierzasz stworzyć witrynę na silniku forum i planujesz modyfikować forum, powiedzmy raz w tygodniu płacić użytkownikom 0,01 $ za każdą wiadomość z automatycznym pobieraniem środków, to powinieneś wybrać jeden z trzech najpopularniejszych silników. Im popularniejsze forum, tym większa szansa na znalezienie programisty, który jest w nim dobrze zorientowany.

Jeśli w silniku nie przewiduje się znaczących zmian, wówczas sensownym rozwiązaniem może być wybranie mniej popularnego silnika, np. SMF lub punBB. To zmniejszy liczbę ataki hakerów na Twoje forum i ilość spamu automatycznie wysyłanego na nie.

Skrypty do wyszukiwania/identyfikacji forów można również znaleźć na więcej niż jednym praktyczne użycie. Pierwszą rzeczą, która przyszła mi do głowy, było posortowanie zidentyfikowanych forów według TIC i umieszczenie w pierwszych stu postach linków do jednej z moich stron. Jednak setki linków dofollow na forum nie wpłynęło w żaden sposób na TCI (minęły 2 aktualizacje), więc lepiej nie tracić tutaj czasu, chyba że nie interesują Cię przejścia.

Oczywiste jest, że wspomniane użycie skryptów nie jest jedyne. Myślę, że bez problemu domyślisz się, jak jeszcze możesz je wykorzystać.

Organizowane przez Botmaster Labs, nieplanowane. Nie mam czasu, filmik jest potrzebny na konkurs, jako nowy trend, chociaż wszystko da się łatwiej wytłumaczyć dobrymi screenami (moje IMHO), a nie bardzo chce mi się cokolwiek kręcić. Zostaje już bardzo mało dochodowych tematów, głupi spam już w ogóle nie rządzi, trzeba tu pomyśleć i nikt nie będzie zakładał tematów, chyba że przestarzałe spróbujesz włożyć do pięknego opakowania i trochę je pudrować. :) Ale tu nie chodzi o nas. Ogólnie rzecz biorąc, te 3 „nie”, myślę, że w zasadzie stały się barierami w udziale w konkursie dla większości potencjalnych uczestników. To jak naprawiać samochód z trzech możliwości: taniej, wysokiej jakości, szybko – usługa może spełnić tylko 2 warunki jednocześnie. usiądź i wybierz to, co jest Ci bliżej. :) Podobnie jest z konkursem: mam czas, umiem nakręcić film, ale nie ma tematu, albo umiem nakręcić film, jest temat, ale nie mam czasu na wszystko, albo mam wolny czas i jest mały temat, ale film jest straszny. Ale jest to dobre, jeśli spełnione są jednocześnie 2 warunki. No dobrze, odrzućmy teksty. Będę dalej dla siebie. Nie planowałem, czyli wziąłem udział w konkursie, nawet wybrałem, na który artykuł oddam głos. Cokolwiek powiesz, Doz zna oprogramowanie bardzo dobrze i wie, jak z niego korzystać bardzo inteligentnie. Ale dzisiaj dowiedziałam się, że w konkursie pojawiła się intryga. Okazuje się, że nie będę mógł głosować, a będą mogli to zrobić tylko nowicjusze, którzy zakupili oprogramowanie w 2011 roku i dla nich konkurs jest przeznaczony. Trochę się zdziwiłem, ale właściciel to gentleman. Konkurs jest kampanią reklamową i Alexander wie lepiej, jak ją przeprowadzić. Ogólnie rzecz biorąc, zdecydowałem się wtedy opublikować artykuł, nieco łatwiej jest pisać, gdy jest jasne, dla kogo, w rzeczywistości dla całego kołchozu, nie jest to możliwe.
Długie wprowadzenie już za nami, teraz do rzeczy.
Czego potrzebuje początkujący, gdy nabył taki superkombajn, jakim jest kompleks Xrumer + Hrefer? Zgadza się, naucz się nad tym pracować i pozbądź się złudzeń, że możesz zarabiać pieniądze, zaczynając od spamowania arkuszy. Jeśli tak uważasz, lepiej od razu przekaż swoje pieniądze na cele charytatywne. Musisz nauczyć się korzystać z narzędzi kompleksu, najlepiej ostrząc je dla siebie. Czasy „bierz więcej – rzuć dalej” minęły. Ilość ustępuje jakości. Oznacza to, że sami zbudujemy bazę, jeśli się tego nie nauczymy, zostaniemy w tyle za pociągiem. Oczywiście Khrefer nam w tym pomoże. Jeśli planujesz promować swoje zasoby w Google, musimy również wyszukać witryny darczyńców za pośrednictwem Google. Myślę, że jest to zrozumiałe i logiczne. Ale Google, niczym władczyni miedzianej góry, nie każdemu rozdaje swoje bogactwo. Trzeba do tego podejść. Od razu mówię, że nie mam nadziei, że na podstawie znaków, które spotkacie w miejscach publicznych, uda się coś zebrać. Są one dostępne publicznie, ponieważ są bezwartościowe. Nie będę dalej rozwijał tematu. Lepiej powiedzieć, jak poprawnie go złożyć, abyś mógł zobaczyć wynik, resztę możesz sam wypracować, najważniejsze jest zrozumienie zasady. Musimy zebrać te właściwe w oparciu o charakterystykę konkretnych silników, których potrzebujemy, a nie ogólnie o charakterystykę forów. Ten główny błąd dla początkujących - nie skupiaj się na konkretnym, ale staraj się objąć wszystko całościowo. A także, jeśli chcesz analizować mniej więcej normalną bazę danych, przestań używać operatorów w zapytaniach. Żadnych „inurl:”, „site:”, „title” itp. Google natychmiast zablokuje wyszukiwarki takie jak Ty. Dlatego dokładnie badamy silniki, z którymi obecnie Khrumer działa:

Obsługiwane przez php-Fusion

W wersji Chrumer 7.07 program został przeszkolony z kilkoma nowymi silnikami:

forumi.biz, forumb.biz, 1forum.biz, 7forum.biz itp.

phpBB-fr.com, motyw phpBB dla Solarisa

A proces uczenia się nowych rzeczy trwa nieustannie.
Ogólnie rzecz biorąc, musimy przygotować poprawne zapytania do analizy przez Khrefer. Weźmy jako przykład forum dizhok. Forum SMF. I zaczniemy rozkładać go na części w celu analizy. Pomoże nam w tym nasz ukochany Google. Wpisz zapytanie do Google Forum SMF- w wynikach wyszukiwania jest dużo śmieci, cofamy się do jakiejś 13 strony i wybieramy dowolny link. Natknąłem się na ten: http://www.volcanohost.com/forum/index.php?topic=11.0 . Otwórzmy to i przestudiujmy. Musimy znaleźć na stronie coś charakterystycznego, co można zastosować do wyszukiwania innych stron w tym silniku. W stopce zauważamy następujący napis Obsługiwane przez SMF 1.1.14, zacytuj go i wpisz w Google, pokazuje nam, że dla tego zapytania zna około 59 milionów opcji. Szybko przeglądamy linki, dodajemy jeszcze kilka opcji do tego słowa kluczowego, np. Topola „Powered by SMF 1.1.14”. Lub Obsługiwane przez SMF 1.1.14 viagra. Dbamy o to, aby prośba była świetna, wyniki to tylko fora i prawie żadnych śmieci.

Poza tym nie interesuje nas ilość, ale jakość, jak powiedziałem powyżej. Zacząć robić. Z tego samego forum czerpiemy ze stopki jeszcze jedno zdanie: , my również go cytujemy i przekazujemy do Google. W odpowiedzi wyjawia, że ​​zna ponad 13 milionów wyników. Ponownie szybko przeglądamy wyniki, dodajemy dodatkowe słowa i sprawdzamy z nimi wyniki. Dbamy o to, aby prośba była doskonała i prawie nie było śmieci. Ogólnie rzecz biorąc, są już 2 prośby o żelazo. Sugeruję na razie zostawić pierwsze forum w spokoju i kontynuować zbieranie próśb z innych forów. Na szczęście mamy Google otwarte na żądanie. 2006-2008, Proste maszyny Spółka z ograniczoną odpowiedzialnością. Z wyników wyszukiwania bierzemy na przykład te fora: http://www.snowlinks.ru/forum/index.php?topic=1062.0 i http://litputnik.ru/forum/index.php?action=printpage ;topic=380.0 w stopce pobieramy od nich zapytania: „Powered by SMF 1.1.7” i „Powered by SMF 1.1.10” (zawsze polecam wpisywać zapytania o Hrefer w cudzysłowie, gdyż przede wszystkim zależy nam na jakości Wszystko). Myślę, że jest jasne co robimy, docelowo będziemy mieli pewną bazę zapytań do przeszukiwania forów na silniku SMF (wybrano ją jako przykład, tak samo z innymi silnikami).
Będzie to wyglądać mniej więcej tak:

„Napędzany przez SMF 1.1.2”

„Napędzany przez SMF 1.1.3”

„Zasilany przez SMF 1.1 RC2”

„Zasilany przez SMF 1.1.4”

„Napędzany przez SMF 1.1.8”

„Zasilany przez SMF 1.1.7”

„2006-2008, Simple Machines LLC”

I to nie wszystko. Zbierając wersje silników, na niektórych forach SMF w stopce znajdujemy nawis „2001-2006, Lewis Media”. Sprawdzamy tę prośbę, ona również w pełni nas satysfakcjonuje. Znajdujemy podobny wniosek: „2001-2005, Lewis Media”. Przeglądając dalej stopki, znajdujemy następującą prośbę: „Projekt SMFone autorstwa A.M.A, przeniesiony do SMF 1.1”. Sprawdzamy – świetnie. I tak dalej. Pół godziny pracy i masz cudowną bazę zapytań na silniku, a dla tych zapytań Google będzie banował znacznie rzadziej, niż gdybyś używał w nich operatorów. A jednocześnie Twoja baza danych będzie znacznie czystsza niż gdybyś korzystał z zapytań typu "index.php?topic=", ponieważ tutaj Google udostępni nie tylko potrzebne nam fora, ale także dużo pozostawionych zasobów tam, gdzie było to możliwe zostaw link do tematu na forum. Możesz się sprzeciwić. Co w tym złego? Inni zostawili link, więc my też możemy. Ale! Linki mogą pozostawiać nie tylko Khrumer, ale także inne programy. ponadto można je specjalnie zaostrzyć do pozostawiania komentarzy w określonym zasobie, tzw. wysoce wyspecjalizowanym oprogramowaniu, a ponadto takie linki można pozostawiać ręcznie. Powtarzam jeszcze raz, nie ilość śmieci jest dla nas ważna, ale jakość, bazę i tak zbierzemy przy odpowiednich prośbach. Plus Ta metoda także dlatego, że praktycznie nie będziesz musiał konfigurować w Hreferze sito -filtr , można to po prostu wyłączyć, bo Google praktycznie nie będzie Ci wyrzucał śmieci.


Myślę, że bardzo ważne jest, aby już na początkowym etapie nauczyć się poprawnie używać Chrefera, ponieważ po nauczeniu się tego zawsze możesz znaleźć zastosowanie dla Chrumera, niezależnie od tego, jak zmieni się sytuacja. Zabezpieczenia stają się coraz bardziej skomplikowane, a jeśli w niektórych typach silników ochrona została wzmocniona i nie może sobie z tym poradzić ten moment Khrumera, wtedy nie ma sensu wydawać środków na zbieranie tych linków, a potem pracować nad nimi z Khrumerem, lepiej skoncentrować energię na tym, co daje rezultaty. Jednocześnie, jeśli zespół Botmaster Labs nauczył Chrumera czegoś nowego, możesz szybko przeprowadzić sekcję nowego pacjenta i przygotować bazę Chrumera, gdy pacjent jest jeszcze ciepły. Czas to pieniądz; zasób może nie mieć już znaczenia, gdy kupisz bazę. zebrane przez kogoś. Ponadto prawidłowe zebranie baz dla siebie znacznie rozszerza „białe” użycie Khrumera. I właśnie w tym miejscu wszystko się porusza, czy nam się to podoba, czy nie, ale następuje proces wybielania lub siwienia. Czarne prześcieradła pod każdym względem stają się przeszłością.
Wszystkie inne techniczne aspekty pracy z Hreferem można zobaczyć w pomocy i nie ma sensu się nad nimi rozwodzić, wszystkie cele, punkty, sekundy ustalane są eksperymentalnie dla każdego samochodu indywidualnie.
Jako bonus wrzucę tutaj szablon do parsowania chińskiej wyszukiwarki Baidu, któregoś dnia mnie o to pytali, więc zrobiłem to od niechcenia, przepraszam za grę słów. :)


Nazwa hosta=http://www.baidu.com
Zapytanie=s?wd=
LinksMaska=
Całkowita liczba stron = 100
Następna strona=

Następna Strona2=

CaptchaURL=
CaptchaImage=
Pole Captcha=


Próbowałem je przetestować, nie było bana, Khrefer szybko zebrał zasoby, wszystkie zapytania o parsowanie były podobne do Google, ale było dużo chińskich zasobów, z wysokim PR, a poza tym było wiele miejsc, gdzie nie było Europejczyk kiedykolwiek postawił stopę. Lepiej jest analizować chińskie żądania. Pomoże w tym tłumacz Google, wpisz listę słów kluczowych po rosyjsku i przetłumacz ją na chiński. Prawda w „ Słowa„Słów Hrefer nie można dodawać w języku chińskim, należy je przekodować.
Zamiast chińskiego:

Rozwiązanie – Viagra

吉他 – gitara

其他 – odpoczynek

保险公司 - ubezpieczenie

Umieść te kody zastępujące w pliku Words:

%E4%BC%9F%E5%93%A5

%E5%90%89%E4%BB%96

%E5%85%B6%E4%BB%96

%E4%BF%9D%E9%99%A9%E5%85%AC%E5%8F%B8

Jeśli promujesz serwis ubezpieczeniowy, to umieszczając link w swoim profilu na znalezionym na życzenie forum tematycznym (!) nawet chińskim” Forum SMF” 保险公司 będzie bardzo dobrze.
Podsumowując, chciałbym powiedzieć, że nigdy nie rozumiałem ludzi, którzy narzekali, że Khrefers są źle lub źle ugotowane; w odpowiedzi zawsze chciałem powiedzieć, że po prostu nie wiesz, jak je ugotować. Żaden parser nie może zebrać wyników lepiej niż osoba polecająca; żądania muszą być po prostu poprawne. Hrefer to samochód: dobry, solidny, produkcji niemieckiej, ale prowadzony przez człowieka i wszystko zależy od tego, jak dobrze się nim jeździ, nie da się zmusić samochodu, żeby jechał jednocześnie w prawo i w lewo.
Osobnym tematem jest czyszczenie baz danych, robiłem to kiedyś 3 lata temu na poprzednie zawody. W większości wszystko jest tam nadal aktualne, ale teraz możesz odmówić sprawdzenia 200 OK, naprawdę nie podobał mi się ten proces, były bardzo duże błędy, odfiltrowano wiele niepotrzebnych rzeczy. Teraz można to zrobić prawie automatycznie podczas działania Khrumera, chociaż proces ten nie jest pełnym analogiem sprawdzania „200 OK”. Tak czy inaczej, do rzeczy: niedawno pojawiła się w Khrumerze cudowna okazja - wyłudzić informacje z zasobów w momencie prowadzenia projektu. To wygląda tak. Wprowadzasz szablon, który będzie przetwarzany w trakcie pracy, a zebrane zgodnie z szablonem informacje zostaną zapisane w pliku xgraished.txt w folderze Logs. Możesz użyć tej funkcji do wszystkiego, lot wyobraźni jest ogromny. Korzystam z tej funkcji raz w tygodniu, aby usunąć linki z „wygasłej” bazy roboczej. Nie jest tajemnicą, że fora wymierają z dnia na dzień, aby oczyścić bazę z takich zasobów i w tym przypadku pomoże nam narzędzie „Autograbbing”.
Przecież trzeba przyznać, często wpisując np. http://www.laptopace.com/index.php, widzimy, że ta domena to już np. goudya, ale tam nie ma forum. Aby więc wyrzucić ten żużel z bazy, okradniemy. :) Otwórz kod źródłowy strony i zobacz tam ten wpis:

laptopce.com
Aby złapać, przekształcamy go w
[...]

Teraz wszyscy „umarli” z goudaddi będą nam znani po imieniu.
Oto mały wybór narzędzia „Autograbbing”, jeśli chcesz wyczyścić bazę danych z różnych „wygasłych” domen:


[...]

[...]
[...]
[...]

[...]
Ta domena może być na sprzedaż. [...]Kup tę domenę

[...]<body bgcolor="#ffffff" text="#000000"> </span><br>Lista nie jest jeszcze kompletna, ale myślę, że pomoże uniknąć wielokrotnego napędzania wielomilionowych baz śmieci. Utworzenie szablonu nie jest trudne, wystarczy otworzyć wygasły link i utworzyć maskę szablonu. <br>Korzystając z tego samego automatycznego przechwytywania, możesz także przeglądać istniejące bazy danych i sortować je według zasobów, dzieląc je na silniki.Sortowanie baz danych według silników pozwoli Ci najlepiej wykorzystać wszystkie funkcje i ustawienia Hrumera, w szczególności proces uczenia. Poza tym za pomocą Autograbbingu możesz usunąć śmieci z baz danych, jeśli wolisz zbierać je nie przez Hrefer, ale pobierając je z różnych usług hostingu plików. Aby to zrobić, musisz albo utworzyć maskę do wybierania forów, a następnie zebrać z bazy danych tylko to, co zostanie przechwycone przez maskę, albo odwrotnie, utworzyć maskę dla nie-forów, a następnie usunąć to, co przechwytuje. Pierwsza opcja jest bardziej logiczna i niezawodna, ponieważ wiemy dokładnie, czego szukać. <br>Powodzenia w pracy. <br>PySy. Nakręciłem film wąsko skupiony (miałem z tym sporo problemów, robiłem to pierwszy raz :)), mimo że uruchomiłem Hrefer z domowej maszyny, prędkość sieci nie jest zbyt dobra, mam kopie tu tylko na testy, więc nie wińcie mnie za szybkość pracy. :) <br><p><span class="BlWV-EuxoOk"></span></p> <h4>16 komentarzy:</h4> <p>Jacek komentuje...</p><p>Jakiego programu użyłeś do doboru słów kluczowych?</p> Serge Glazko komentuje... <p>Jeśli potrzebuję zebrać zasoby tematyczne, to dobieram słowa ręcznie w Wordzie i poprzez AdWords. ale dla wielu tematów słowa zostały już dla mnie wybrane, tutaj mogę tylko dodać lub usunąć niektóre słowa, ale też nie automatycznie, ale przejrzeć je wszystkie.</p> <p>Witam, drodzy czytelnicy bloga. Kontynuujemy więc temat konfiguracji silnika forum o nazwie SMF, który rozpoczęliśmy w poście na ten temat. Tam jeszcze nie uczyniliśmy forum rosyjskim, jeśli chodzi o tłumaczenie z angielskiego interfejsu. Na chwilę obecną nie wygląda to zbyt reprezentacyjnie, ale po rusyfikacji (o ile już tego nie dokonano) i utworzeniu odpowiednich sekcji jego wygląd znacznie się poprawi.</p><p>Dzisiaj przyjrzymy się motywom projektu i uczynimy go rosyjskim, a także zainstalujemy komponent JFusion, który może współpracować z obydwoma silnikami (Jumla i SMF), co pozwoli nam mieć wspólną bazę użytkowników dla dwóch i tylko jednego formularza dla ich rejestracja i logowanie.</p><h2>Motywy i instalacja pakietu języka rosyjskiego</h2><p>Silnik Simple Machines Forum obsługuje możliwość zmiany motywów i można je zmieniać zarówno dla całego forum, jak i w szczególności dla jego poszczególnych sekcji. Osobiście korzystałem z motywu domyślnego, ale sporo zmian wprowadziłem w nim ręcznie. W szczególności zmieniłem tło, kolory niektórych elementów, dodałem zegar na pendrive, radio i wiele więcej, o czym będę mówił w kolejnych wpisach w tym dziale.</p><p>Dlaczego podczas tworzenia forum nie użyłem żadnego z dodatkowych motywów? Cóż, to chyba wszystko przez moje lenistwo. Nie, nie byłem leniwy w wyszukiwaniu i pobieraniu nowych motywów, na szczęście jest wiele miejsc, w których można to zrobić. Moje lenistwo leży gdzie indziej.</p><p>Faktem jest, że cała gama modów dla tego silnika, mających na celu rozszerzenie jego możliwości, koncentruje się szczególnie na domyślnym motywie. Pozwól mi wyjaśnić. Jeśli masz domyślny motyw, dodanie moda do SMF odbywa się w ciągu kilku sekund i z reguły nie wymaga ręcznej edycji kodu.</p><p>Jeśli zainstalujesz mod z motywem projektu innym niż domyślny, będziesz musiał, jak mówią, przetworzyć wszystkie surowe części za pomocą pliku. Innymi słowy, będziesz musiał <a href="https://bar812.ru/pl/kak-stavit-shablony-osnovy-photoshop-sozdanie-besshovnoi-zalivki-pattern-dlya.html">za pomocą FileZilli</a>(pobierz i skonfiguruj, możesz uzyskać dostęp do witryny przez FTP i otworzyć do edycji plików swojego silnika forum, w którym <a href="https://bar812.ru/pl/skyrim-launcher-ne-vidit-faily-launcher-skairim-ne-vidit-mody-kak-reshit.html">tego moda</a> wprowadza zmiany.</p><p>Następnie wyszukaj <a href="https://bar812.ru/pl/zachem-nuzhen-validnyi-kod-i-kak-ustranit-oshibki-validacii-url-adresa-v.html">Właściwe miejsce</a> w kodzie i wykonaj niezbędne czynności: zastąp kod, usuń lub dodaj sekcję kodu przed lub po wymaganym fragmencie. Jeśli weźmiesz pod uwagę, że może być kilkanaście plików, w których trzeba będzie wprowadzić zmiany, możesz sobie wyobrazić, jak kłopotliwe będzie to zrobić. W takim przypadku musisz być bardzo ostrożny i nie popełniać błędów, ponieważ w przeciwnym razie forum może się w ogóle nie otworzyć.</p><p>Jeśli wszystkie powyższe problemy związane z używaniem motywu innego niż domyślny Cię nie przerażają, możesz je pobrać stąd. Motywy są podzielone na sekcje (minimalizm, zbliżony do klasycznego, nowoczesnego itp.), a dla każdego z nich możesz zobaczyć zrzut ekranu na <a href="https://bar812.ru/pl/kak-sdelat-polnoekrannyi-vyiti-na-polnyi-ekran-kak-nastroit.html">Pełny ekran</a>. Nieco później powiem Ci, jak zainstalować te same motywy.</p><p>Jeśli nie zrusyfikowałeś forum na etapie wgrywania plików silnika na hosting, jak to opisano w pierwszej części tego opusu (patrz link na samym początku artykułu), możesz to zrobić teraz. Język rosyjski pobrany wcześniej z tej strony <a href="https://bar812.ru/pl/posylaet-index-php-topic-powered-by-smf-temy-oformleniya-i-rusifikaciya-foruma-smf-a-tak-zhe.html">pakiet językowy</a> z wymaganym, musisz rozpakować, a następnie skopiować folder Motywy do <a href="https://bar812.ru/pl/html-absolyutnye-i-otnositelnye-ssylki-sozdanie-ssylki-otnositelno.html">Folder główny</a>, gdzie istnieje już katalog o tej samej nazwie.</p><p>Po zakończeniu kopiowania musisz zalogować się na forum przy użyciu nazwy użytkownika i hasła administratora. W górnym menu wybierz „Administrator”, a następnie w lewej kolumnie kliknij „Ustawienia serwera”.</p><p>W oknie, które zostanie otwarte, znajdź pozycję „Domyślny język forum” i wybierz z rozwijanej listy język rosyjski, a następnie kliknij przycisk „Zapisz” u dołu strony.</p><p><img src='https://i2.wp.com/ktonanovenkogo.ru/image/16.092.png' width="100%" loading=lazy loading=lazy></p><p>To wszystko, teraz Twoja konferencja jest całkowicie w języku rosyjskim.</p><h3>Rozwiązywanie problemów podczas instalowania modów, które nie obsługują języka rosyjskiego</h3><p>Pamiętaj, że w przyszłości przy dodawaniu do SMF modów, które nie mają rosyjskiego tłumaczenia, możesz czasami mieć problem z wyświetleniem ustawień modów w panelu administracyjnym. Właściwie te same ustawienia po prostu nie będą widoczne w panelu administracyjnym, bo... nie będzie dla nich akt rusyfikacji. Dlatego będziesz mieć dwie możliwości rozwiązania tego problemu.</p><p>Pierwszym sposobem jest przejście na język angielski dla całego forum. Jak można to zrobić, możesz zobaczyć kilka akapitów powyżej. W związku z tym po wykonaniu niezbędnych czynności przy tych ustawieniach będziesz musiał ponownie wrócić do języka rosyjskiego.</p><p>Druga metoda jest bardziej skomplikowana, ale pozwoli nam zobaczyć ustawienia zainstalowanych modów w panelu administracyjnym zawsze, a nie tylko po aktywacji <a href="https://bar812.ru/pl/trikolor-tv-akcii-po-oplate-akcii-trikolor-tv-besplatnyh-uroka.html">po angielsku</a>. Rozważam tę kwestię bardzo szczegółowo, ponieważ bardzo często pojawia się pytanie, że ktoś zainstalował mod i nie może znaleźć jego ustawień w panelu administracyjnym swojej tablicy.</p><p>Zatem drugim sposobem jest dodanie linii tłumaczeń do plików rusyfikacji dla nowo dodanych modów. Jak ustalić, które pliki rusyfikacji należy zmienić i gdzie je zdobyć, powiem później. W międzyczasie możesz tymczasowo skorzystać z pierwszej metody.</p><h2>Instalowanie JFusion w celu integracji witryny internetowej i forum</h2><p>Najpierw musisz pobrać JFusion i jego rusyfikację. Po wejściu do panelu administracyjnego Joomla wykonujemy standardowe czynności: wybierz z <a href="https://bar812.ru/pl/fiksirovannoe-verhnee-menyu-i-plavayushchii-saidbar-v-wordpress.html">górne menu</a> elementy panelu administracyjnego „Rozszerzenia” - „Zainstaluj/Odinstaluj” - „Pobierz plik pakietu” - przycisk „Przeglądaj” - znajdź na swoim komputerze plik z komponentem jfusion_package.zip - kliknij przycisk „Pobierz plik i zainstaluj”.</p><p>Następnie pojawi się okno informujące, że komponent został pomyślnie zainstalowany. Jeśli pojawią się problemy, możesz zapoznać się z rozwiązaniami niektórych z nich pod linkiem podanym tuż powyżej.</p><p>Teraz czas na rusyfikację, którą dodajemy dokładnie w taki sam sposób jak sam komponent. Te. powtórz sekwencję czynności: „Rozszerzenia” - „Zainstaluj/Odinstaluj” - „Pobierz plik pakietu” - przycisk „Przeglądaj” - znajdź plik JFusion Russification na swoim komputerze - kliknij przycisk „Pobierz plik i zainstaluj”. Teraz możemy przejść do ustawień ścieżką „Komponenty” - „JFusion” i upewnić się, że rusyfikacja została pomyślnie dodana i działa.</p><p><img src='https://i0.wp.com/ktonanovenkogo.ru/image/16.093.png' width="100%" loading=lazy loading=lazy></p> <p>Powodzenia! Do zobaczenia wkrótce na stronach bloga</p><h3></h3><p>Możesz być zainteresowany</p><p><img src='https://i1.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/nastroika-jfusion.jpg' width="100%" loading=lazy loading=lazy><span>Konfigurowanie JFusion do łączenia <a href="https://bar812.ru/pl/gordostyu-index-php-topic-powered-by-smf-temy-oformleniya-i-rusifikaciya-foruma-smf-a-tak-zhe.html">forum SMF</a> i witryna Joomla</span> <br><img src='https://i1.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/moduli-jfusion.jpg' width="100%" loading=lazy loading=lazy><span>Moduły JFusion do wyświetlania wiadomości z forum na stronie internetowej, a także tworzenia przycisku w SMF umożliwiającego powrót do Joomla</span> <br><img src='https://i2.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/forum-joomla.jpg' width="100%" loading=lazy loading=lazy><span>Utworzenie pozycji menu w Joomla umożliwiającej wejście na forum i przeniesienie rejestracji użytkownika z SMF na stronę</span> <br><img src='https://i2.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/ustanovka-smf.jpg' width="100%" loading=lazy loading=lazy><span>Instalacja Forum SMF - Integracja Joomla 1.5 i Simple Machines Forum za pomocą komponentu JFusion</span> <br><img src='https://i1.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/rasshireniya-joomla.jpg' width="100%" loading=lazy loading=lazy><span>Rozszerzenia dla Joomla - czym są i skąd pobrać komponenty, moduły i wtyczki dla Joomla, jak je instalować i usuwać</span> <br><img src='https://i0.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/k2-joomla.jpg' width="100%" loading=lazy loading=lazy><span>Komponent K2 do tworzenia blogów, katalogów i portali na Joomla - funkcje, instalacja i rusyfikacja</span> <span>Galeria zdjęć dla Joomla - Część 3 - Tworzenie galerii w Joomla 1.5 przy użyciu komponentu Phoca Gallery - dodawanie kategorii i przesyłanie zdjęć do galerii zdjęć</span> <br><img src='https://i0.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/artio-joomsef.jpg' width="100%" loading=lazy loading=lazy><span>ARTIO JoomSEF - konfiguracja łączy CNC (SEF) i tytułu w Joomla, a także tworzenie strony błędu 404 przy użyciu tego rozszerzenia</span> <br><img src='https://i2.wp.com/ktonanovenkogo.ru/wp-content/uploads/2013/10/joomlapack.jpg' width="100%" loading=lazy loading=lazy><span>Akeeba Backup (dawniej JoomlaPack) - tworzenie kopii zapasowej witryny w Joomla i przywracanie jej z <a href="https://bar812.ru/pl/mozhno-li-ustanavlivat-windows-10-sposoby-besplatnogo-poluchenie-licenzii.html">kopia zapasowa</a> za pomocą dwóch kliknięć</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> </div> </div> <div class="td-pb-span4 td-main-sidebar" role="complementary"> <div class="td-ss-main-sidebar"> </div> </div> </div> </div> </article> <script type="text/javascript"> try { var sbmt = document.getElementById('submit'), npt = document.createElement('input'), d = new Date(), __ksinit = function() { sbmt.parentNode.insertBefore(npt, sbmt); }; npt.value = d.getUTCDate() + '' + (d.getUTCMonth() + 1) + 'uniq9065'; npt.name = 'ksbn_code'; npt.type = 'hidden'; sbmt.onmousedown = __ksinit; sbmt.onkeypress = __ksinit; } catch (e) {} </script> <div class="td-sub-footer-container td-container-wrap "> <div class="td-container "> <div class="td-pb-row "> <div class="td-pb-span td-sub-footer-menu "></div> <div class="td-pb-span td-sub-footer-copy ">2023 bar812.ru. Po prostu coś skomplikowanego. Programy. Żelazo. Internet. Okna</div> </div> </div> </div> </div> <script data-cfasync="false" type="text/javascript"> if (window.addthis_product === undefined) { window.addthis_product = "wpwt"; } if (window.wp_product_version === undefined) { window.wp_product_version = "wpwt-3.1.2"; } if (window.wp_blog_version === undefined) { window.wp_blog_version = "4.9.1"; } if (window.addthis_share === undefined) { window.addthis_share = {}; } if (window.addthis_config === undefined) { window.addthis_config = { "data_track_clickback": true, "ui_language": "ru", "ui_atversion": "300" }; } if (window.addthis_plugin_info === undefined) { window.addthis_plugin_info = { "info_status": "enabled", "cms_name": "WordPress", "plugin_name": "Website Tools by AddThis", "plugin_version": "3.1.2", "plugin_mode": "AddThis", "anonymous_profile_id": "wp-f2d21fd70bfc0c32605b4e5e1e4ff912", "page_info": { "template": "posts", "post_type": "" }, "sharing_enabled_on_post_via_metabox": false }; } (function() { var first_load_interval_id = setInterval(function() { if (typeof window.addthis !== 'undefined') { window.clearInterval(first_load_interval_id); if (typeof window.addthis_layers !== 'undefined' && Object.getOwnPropertyNames(window.addthis_layers).length > 0) { window.addthis.layers(window.addthis_layers); } if (Array.isArray(window.addthis_layers_tools)) { for (i = 0; i < window.addthis_layers_tools.length; i++) { window.addthis.layers(window.addthis_layers_tools[i]); } } } }, 1000) }()); </script> <script type='text/javascript'> var tocplus = { "smooth_scroll": "1", "visibility_show": "\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c", "visibility_hide": "\u0441\u043a\u0440\u044b\u0442\u044c", "width": "Auto" }; </script> <script type='text/javascript' src='https://bar812.ru/wp-content/plugins/disqus-comment-system/media/js/disqus.js?ver=bbebb9a04042e1d7d3625bab0b5e9e4f'></script> <script> (function() { var html_jquery_obj = jQuery('html'); if (html_jquery_obj.length && (html_jquery_obj.is('.ie8') || html_jquery_obj.is('.ie9'))) { var path = '/wp-content/themes/Newspaper/style.css'; jQuery.get(path, function(data) { var str_split_separator = '#td_css_split_separator'; var arr_splits = data.split(str_split_separator); var arr_length = arr_splits.length; if (arr_length > 1) { var dir_path = '/wp-content/themes/Newspaper'; var splited_css = ''; for (var i = 0; i < arr_length; i++) { if (i > 0) { arr_splits[i] = str_split_separator + ' ' + arr_splits[i]; } //jQuery('head').append('<style>' + arr_splits[i] + '</style>'); var formated_str = arr_splits[i].replace(/\surl\(\'(?!data\:)/gi, function regex_function(str) { return ' url(\'' + dir_path + '/' + str.replace(/url\(\'/gi, '').replace(/^\s+|\s+$/gm, ''); }); splited_css += "<style>" + formated_str + "</style>"; } var td_theme_css = jQuery('link#td-theme-css'); if (td_theme_css.length) { td_theme_css.after(splited_css); } } }); } })(); </script> <div id="tdw-css-writer" style="display: none" class="tdw-drag-dialog tdc-window-sidebar"> <header> <a title="Redaktor" class="tdw-tab tdc-tab-active" href="#" data-tab-content="tdw-tab-editor">Edytuj za pomocą Live CSS</a> <div class="tdw-less-info" title="Będzie czerwony, gdy zostaną wykryte błędy w CSS i LESS"></div> </header> <div class="tdw-content"> <div class="tdw-tabs-content tdw-tab-editor tdc-tab-content-active"> <script> (function(jQuery, undefined) { jQuery(window).ready(function() { if ('undefined' !== typeof tdcAdminIFrameUI) { var $liveIframe = tdcAdminIFrameUI.getLiveIframe(); if ($liveIframe.length) { $liveIframe.load(function() { $liveIframe.contents().find('body').append('<textarea class="tdw-css-writer-editor" style="display: none"></textarea>'); }); } } }); })(jQuery); </script> <textarea class="tdw-css-writer-editor td_live_css_uid_1_5a5dc1e76f1d6"></textarea> <div id="td_live_css_uid_1_5a5dc1e76f1d6" class="td-code-editor"></div> <script> jQuery(window).load(function() { if ('undefined' !== typeof tdLiveCssInject) { tdLiveCssInject.init(); var editor_textarea = jQuery('.td_live_css_uid_1_5a5dc1e76f1d6'); var languageTools = ace.require("ace/ext/language_tools"); var tdcCompleter = { getCompletions: function(editor, session, pos, prefix, callback) { if (prefix.length === 0) { callback(null, []); return } if ('undefined' !== typeof tdcAdminIFrameUI) { var data = { error: undefined, getShortcode: '' }; tdcIFrameData.getShortcodeFromData(data); if (!_.isUndefined(data.error)) { tdcDebug.log(data.error); } if (!_.isUndefined(data.getShortcode)) { var regex = /el_class=\"([A-Za-z0-9_-]*\s*)+\"/g, results = data.getShortcode.match(regex); var elClasses = {}; for (var i = 0; i < results.length; i++) { var currentClasses = results[i] .replace('el_class="', '') .replace('"', '') .split(' '); for (var j = 0; j < currentClasses.length; j++) { if (_.isUndefined(elClasses[currentClasses[j]])) { elClasses[currentClasses[j]] = ''; } } } var arrElClasses = []; for (var prop in elClasses) { arrElClasses.push(prop); } callback(null, arrElClasses.map(function(item) { return { name: item, value: item, meta: 'in_page' } })); } } } }; languageTools.addCompleter(tdcCompleter); window.editor = ace.edit("td_live_css_uid_1_5a5dc1e76f1d6"); // 'change' handler is written as function because it's called by tdc_on_add_css_live_components (of wp_footer hook) // We did it to reattach the existing compiled css to the new content received from server. window.editorChangeHandler = function() { //tdwState.lessWasEdited = true; window.onbeforeunload = function() { if (tdwState.lessWasEdited) { return "You have attempted to leave this page. Are you sure?"; } return false; }; var editorValue = editor.getSession().getValue(); editor_textarea.val(editorValue); if ('undefined' !== typeof tdcAdminIFrameUI) { tdcAdminIFrameUI.getLiveIframe().contents().find('.tdw-css-writer-editor:first').val(editorValue); // Mark the content as modified // This is important for showing info when composer closes tdcMain.setContentModified(); } tdLiveCssInject.less(); }; editor.getSession().setValue(editor_textarea.val()); editor.getSession().on('change', editorChangeHandler); editor.setTheme("ace/theme/textmate"); editor.setShowPrintMargin(false); editor.getSession().setMode("ace/mode/less"); editor.setOptions({ enableBasicAutocompletion: true, enableSnippets: true, enableLiveAutocompletion: false }); } }); </script> </div> </div> <footer> <a href="#" class="tdw-save-css">Ratować</a> <div class="tdw-more-info-text">Napisz CSS OR LESS i naciśnij Zapisz. CTRL + SPACJA dla automatycznego uzupełniania.</div> <div class="tdw-resize"></div> </footer> </div> <script type="text/javascript" defer src="https://bar812.ru/wp-content/cache/autoptimize/js/autoptimize_d85127d8732b44d62e81e0455b3d3cb7.js"></script> </body> </html>