
Ketika kami membayar setiap hari untuk layanan, itu adalah pembelian layanan.
Ketika kita membayar setiap hari tanpa bayaran (kadang-kadang tanpa menyadarinya) - ini adalah pencurian.
Selamat siang, pembaca Habr!
Bagaimana semuanya dimulai
Saya ingin mencuri lebih sedikit, dan mari bertarung! Tapi secara manual itu sangat melelahkan, lama dan tidak efektif, maka muncul ide untuk mengotomatiskan bisnis ini.
Tentang yang mana dari "pencurian" saya? Tentang di mana kita, berjalan di Internet, klik tombol "menonton video", beberapa halaman dimuat, untuk beberapa alasan video tidak diputar, kita pergi dan berjalan lebih jauh, tetapi sebenarnya kita "secara sukarela" mengaktifkan layanan untuk menerima apa sesuatu yang belum pernah dilihat orang dengan biaya nominal 30 rubel sehari dari akun ponselnya. Pada orang, ini disebut langganan wap-klik atau seluler, dan operator seluler memunculkan beragam nama yang indah. Namun, jangan sertakan pencurian tombol video dalam daftar layanan.
Ini sedikit lebih detail. Dan di
sini ada cerita tentang cara yang baik untuk "menghasilkan uang."
Ada banyak kasus yang dijelaskan dari langganan tidak sepenuhnya sukarela, yang
ini , misalnya. Tidak tertulis - lebih banyak.
Pegulat juga memiliki:
Apa dan mengapa otomatis
Cari dan blokir iklan di panel penerbit Google AdSense.
Tujuannya adalah untuk meningkatkan efisiensi pemblokiran dan membebaskan waktu yang dihabiskan untuk pembersihan manual.
Esensi masalah dan solusi yang tersediaSelama bertahun-tahun (
penyebutan pertama tentang hal serupa yang saya temukan adalah pada musim panas 2014), penerbit secara manual menangkap aliran “kematian Yakubovich”, “batu bertingkat”, “menonton video menonton, menonton klik” dan roh-roh jahat lainnya (
mulai ,
melanjutkan ), proses ini hampir tidak ada otomatisasi
1 dan tampaknya hampir mustahil.
1 Ada (setidaknya sekali) dua solusi, tetapi mereka memiliki persyaratan yang agak serius yang tidak semua orang mampu.
Solusi-solusi ini:
- Pembersih AdSense . Dibutuhkan banyak tambahan. Perangkat lunak.
- AdsAutomation . Script untuk mengontrol browser Google Chrome (seperti yang saya mengerti, di ZennoPoster). Diperlukan PC terpisah. Dan saat ini, proyek telah dihapus dari GitHub.
Jika Anda membuat perangkat lunak yang menggantikan orang yang memblokir iklan, maka itu harus dilakukan dengan mempertimbangkan sejumlah persyaratan:
- harus bekerja pada perangkat keras dan lunak yang dimiliki hampir semua pemilik situs;
- Jangan memerlukan perangkat lunak tambahan dan ubah pengaturan yang ada;
- Mudah dipasang dan dikonfigurasikan sehingga rata-rata pengguna dapat mengirim.
.
Secara umum, php (with cURL) akan memiliki apa yang diperlukan. Anda dapat mengunggah langsung ke situs web Anda dan bekerja tanpa komputer tambahan dan kesulitan lainnya.
Dan satu penyempurnaan dengan persyaratan.Karena solusi dimaksudkan untuk diotomatiskan di php, oleh karena itu, peluncuran melalui cron, penyimpanan pengaturan pengguna dan data sementara harus di disk (bukan dalam cookie). Hanya kunci untuk mengakses panel kontrol yang akan disimpan dalam cookie. Untuk para elit yang tidak memiliki kemampuan untuk mengonfigurasi cron, tetapi dapat membuat satu tab terbuka pada PC / tablet / smartphone, kemampuan untuk menjalankan penghitung waktu secara berkala pada Javascript akan ditambahkan.
Apa yang dibayangkan awal atau API Google
Dan untuk AdSense ada API, saya entah bagaimana melihatnya dari sudut mata saya dan tidak masuk terlalu dalam. Sekarang adalah waktunya untuk mempelajari. Ada banyak kemungkinan, tetapi ternyata tidak ada di
sini , yah, tidak ada yang dijelaskan tentang API untuk
CPU . Ingin menonton iklan yang berputar di situs, silakan - secara manual.
Mulai
Antarmuka Google AdSense dibangun di atas AngularDart, semuanya tampak indah dan cukup rumit dari sudut pandang perangkat.
Pertama-tama, saya melihat alat pengembang Google Chrome pada tab "Network" untuk "menguping" tentang bagaimana antarmuka canggih ini berkomunikasi dengan server. Ada banyak permintaan di sana, yang paling menarik bagi saya adalah di bagian "XHR and Fetch", dan di sana saya menemukan sesuatu yang tampak cukup dapat ditebak, jika Anda berpikir dengan hati-hati. Misalnya, salah satu permintaan posting:
String yang dikirimkan.{"method":"searchArcApprovals","params":"{\"1\":\"ca-pub-8958890276790964\",\"2\":{\"1\":0,\"2\":1,\"3\":0,\"4\":{\"1\":{\"1\":\"AClZvXKL6S3HChRty5YBa81BLWDBQkb3FYDsifZ9V/mBTKbOGlj3gMWVpzTtXggA1880Le9NyVZIicNm/4pz724e/MO8fyLfjOReF205cyjLV9C8OCCeKe7VvZHyvyKpXh8x9smTQ0n8qIIqzuIXle5UK0hD4VBkZDvy//qoSPRCr94UtWYqqi//Rot22LJ2JFNjWEGb4n1YQbAw0cKWPR3LAugPBajInWXEFGWJRTnmY2TkI5VzUzIkcXpJ/bkajn3c8GnecCfFNvNhGLS10VXdRwiykngG3xfoMTRhQOR5GXbm4kwdIhzQUM/d6xP0Xda3FOIZGGk9bymneg+9oDY+rMFiRfDFCb66g50t9J9r++oHXjek09Ci1rqC7LOw2pvkqp3hjG6RyVmsiT/eWGq+OsfjE7CgRk43QIRMSa+jlZBQhARUPlpUXzyZyoTiIPTRZ5ND/4MnIMqaUWSRoDGffiE/XkHJPEkNZtLX2XR5gZ3x5/K+ejU/fqxfZIjI6A3kueJybNA46wSLbmflhDCGDJEE2aeYemLFGqNzFG43B80LzU3yuwgZhrLu/jaMvBJozi0nq+gXEz6r+8tic4fvsQ9lWDA+IXzXw6MKzamgfWV0ORGDW0+966KIY6IkjtIlNRKGyp3pSAd2Po+br4Dl4WNwSkMdmuV60wOrkb5BpnKZKIhDtpjWF7q6ly3FFhwo8Ktdq5ddVJ8ijJ9Y9tQhs2O0idA9N0yV86khV1IQ72OgbMv15qAswnbqF9WCo3qpfJNjJqMCHBRTohPCxhRp0cWz2thszZTmDDADPxU46sclnurd/JxHFO7lJZVdrsFB4vdLIx9kObV3bP1gOpU66kdcmom2tiedknugj7s0jLcgf1EfXnp+SUUAQyoqwS+kdhhQtGqSXgI2TopsuaLVzj+EtAuPwWeLvtI9CFPSe4o2x+gjCRPl8wVvWKV5FIrZavUVOAHZIL4nKyJjHxZi3jPfVnAia/hq1gW6XKoCg1eWGg/cAWZY4mZYQ6W4XnC0MY0uMC6fhPQdXnIS5iLZNhan80jbr/leBr4fO22+tXc6oZpZsDkXd0r3ilBJFPS2I/zAhotuzZgNA+nF2N86pyiSrdeEYFDhKWKadcKAVc3BMxxlrqZYcAXnlus9GW7R9F/ImXQ/fjRfSjVRUaJuQ0EnFejNAwdGcS6STYMa1G0wnNMAKcZ52xcHgil1SZ6N9BQ7A27z6eViOxw0LHBqNJIRZwQml2KjPd5b00D9XvohDr6jBqYXLGS/HMVvpGDJZLDI2LRlmkqBqx7YEgDZqvspeoMLHIJP22SkQDnaJtsOLGVBSi20ZD5nRyjAgS6MmcgFCvfJVWjCIL1RPHqmUU90eK4WXve0ayH9cJnpbtWrkXYCibhVPCMmYowMROw7rI4bPir0\"}}}}","xsrf":"ABOvogKvrE9fIqAKh0w02RIsB4OJ4hsB_g:1535467885347"}
Pengidentifikasi penerbit segera terlihat dalam permintaan, di bawah paragraf kedua ada satu set parameter, esensi yang dapat ditentukan secara eksperimental dan token XSRF.
Dan sebagai tanggapan, ia menerima informasi terperinci tentang pengumuman tersebut, tetapi tidak semua tanpa pengumuman itu sendiri (di sini dan di bawah, gambar yang diperluas di base64 dipangkas).
Selembar beberapa halaman. {"result":{"1":[{"1":0,"3":0,"4":{"1":"AClZvXJ2t4wiEZ/VZ0i54m0Qtqpi2DTqkI1kaPMTRi4LnsQn0iR5K1xBlFpS1xmJV7ko4a6qx5RcTkp7CzVjwoy5UDSWZ5jOCPLGRcoQdDt+wOk46bdr0yA\u003d"},"5":{"1":82,"2":0,"3":0,"4":"\u003cdiv id\u003d\"ad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60\"\u003e\u003c/div\u003e","5":"\u003cdiv id\u003d\"ad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60\"\u003e\u003c/div\u003e","6":"\u003cdiv\u003e\u041c\u043d\u043e\u0433\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u043d\u044b\u0435\u003cspan id\u003d'multi-format-tooltip'\u003e\u003c/span\u003e\u003c/div\u003e\u003ca class\u003d'arc-url-link-ellipsis' target\u003d'_blank' href\u003d'https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/' title\u003d'https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/'\u003ehttps://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\u003c/a\u003e","7":"\u003cdiv class\u003d'arc-one-by-one-legend'\u003e\u0422\u0438\u043f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003e\u041c\u043d\u043e\u0433\u043e\u0444\u043e\u0440\u043c\u0430\u0442\u043d\u044b\u0435\u003cspan id\u003d'multi-format-tooltip'\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-legend'\u003e\u0426\u0435\u043b\u0435\u0432\u043e\u0439 URL\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003e\u003ca class\u003d'arc-url-link-ellipsis' target\u003d'_blank' href\u003d'https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/' title\u003d'https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/'\u003ehttps://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\u003c/a\u003e\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-legend'\u003e\u0414\u043e\u043c\u0435\u043d\u044b \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003e4aynikam.ru\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003eandroidphone.su\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003eandroidphones.ru\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003efull-repair.com\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003ehowgadget.com\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-legend'\u003e\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0434\u0430\u0442\u0435\u043b\u044c\u003cspan id\u003d'adx-advertiser-tooltip'\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv class\u003d'arc-one-by-one-data'\u003eDNS Shop\u003c/div\u003e","8":"\u003cdiv\u003e\u003cspan class\u003d'arc-impression-score high'\u003e\u0412\u042b\u0421\u041e\u041a\u041e\u0415\u003c/span\u003e \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432\u003c/div\u003e","9":{"1":"\u003ca href\u003d\"https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\" target\u003d\"_blank\"\u003e\u003cimg onerror\u003d\"this.src\u003d'data:image/gif;base64,RA7'\" src\u003d\"https://www.google.com/webpagethumbnail?c\u003d58\u0026s\u003d400:400\u0026r\u003d4\u0026d\u003dhttps://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\u0026a\u003dAIYkKU9ZGGjFTOWtm771MQwgDYxqtlBLCw\" border\u003d0 alt\u003d\"\"\u003e\u003c/a\u003e","2":"\u003ca href\u003d\"https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\" target\u003d\"_blank\"\u003e\u003cimg onerror\u003d\"this.src\u003d'data:image/gif;base64,R0AA7'\" src\u003d\"https://www.google.com/webpagethumbnail?c\u003d58\u0026s\u003d400:400\u0026r\u003d3\u0026d\u003dhttps://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\u0026a\u003dAIYkKU_CQ2K6v5f11Nk1RXtc87FtmG2B1w\" border\u003d0 alt\u003d\"\"\u003e\u003c/a\u003e","3":"\u003ca href\u003d\"https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\" target\u003d\"_blank\"\u003e\u003cimg onerror\u003d\"this.src\u003d'data:image/gif;base64,R0lAA7'\" src\u003d\"https://www.google.com/webpagethumbnail?c\u003d58\u0026s\u003d400:400\u0026r\u003d6\u0026d\u003dhttps://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/\u0026a\u003dAIYkKU_My0a48LAsW-ZKpQX-ATXkMoPEVg\" border\u003d0 alt\u003d\"\"\u003e\u003c/a\u003e"},"10":"https://adwords-displayads.googleusercontent.com/da/b/preview.js?client\u003dasfe-arc-external-preview\u0026obfuscatedCustomerId\u003d5240877441\u0026creativeId\u003d288930210411\u0026htmlParentId\u003dad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60\u0026sig\u003dACiVB_yMUjLwDjRO2T-0VAaVuRPt8uLHGQ","13":"https://adwords-displayads.googleusercontent.com/da/b/preview.js?client\u003dasfe-arc-external-preview\u0026obfuscatedCustomerId\u003d5240877441\u0026creativeId\u003d288930210411\u0026htmlParentId\u003dad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60\u0026showVariations\u003dtrue\u0026sig\u003dACiVB_yMUjLwDjRO2T-0VAaVuRPt8uLHGQ","14":"https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/","15":"","17":"","18":"DNS Shop","20":"adv-5594449542310820","21":["site1.ru","site2.com","site3.com","site4.ru"]},"6":{"5":"-6668648012302470727","7":["DNS"],"9":0},"7":1,"9":{"3":[{"1":{"1":"AClZvXLE9HJbFYq9TrAsXFgV4YkXsQt9lXp1xWjSB5aT5bFBpe4VNgo\u003d"},"2":"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u0442\u0435\u043b\u0435\u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438","3":"\u0422\u043e\u0432\u0430\u0440\u044b \u0438 \u0443\u0441\u043b\u0443\u0433\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0435\u043b\u0435\u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u044f\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0435 \u0438 \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u043e\u0432\u043e\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442."},{"1":{"1":"AClZvXKrUJJ3kKBen2scP56BynOtGhf160i1F1LLmtBj3b/oh2dUFg8\u003d"},"2":"\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b","3":"\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0438 \u0441\u043e\u0442\u043e\u0432\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0442\u043e\u0432\u0430\u0440\u043e\u0432. \u0412 \u044d\u0442\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u044b \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432."},{"1":{"1":"AClZvXL4W+khZ4O9SJiu97cTbTs2+0Wecf1IVNju8ffd4ysIT9PJ7XY\u003d"},"2":"\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u0438 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u044b \u0434\u043b\u044f \u043d\u0438\u0445","3":"\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u044b \u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0445\u043b\u044b, \u043c\u043e\u043d\u043e\u043f\u043e\u0434\u044b \u0434\u043b\u044f \u0441\u0435\u043b\u0444\u0438, \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u044b \u0438 \u0437\u0430\u0440\u044f\u0434\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430."},{"1":{"1":"AClZvXLQ3gPoVwjQbokDpB3+nni4xURwH5+YlnwkqjYtUowjhiKvk8Q\u003d"},"2":"\u041f\u041a \u0438 \u0431\u044b\u0442\u043e\u0432\u0430\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430","3":"\u0422\u043e\u0432\u0430\u0440\u044b, \u0443\u0441\u043b\u0443\u0433\u0438 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438 \u0438 \u0431\u044b\u0442\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u043e\u0439."},{"1":{"1":"AClZvXLKYOGgOROaa32IUxU15jP89AtTM4dV24WKS+daMhqJMTNmeSY\u003d"},"2":"\u0422\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u044f","3":"\u0422\u043e\u0432\u0430\u0440\u044b, \u0443\u0441\u043b\u0443\u0433\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u0435\u0439 \u0438 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e."}]},"10":{"1":"AClZvXLdGOShgJo+BM3apOUAFzQkE41z1/hiZhIY8eUlC7p7xXPm82P3dq7yXhbEI+tN/YHgdH4P"}}],"2":0.0,"3":"60609","4":1,"5":"","6":"ClD3Z2nP2P/////1/ff99fXV98nMyMrJz8rH9fHV883Hx8bMz83Oz8vOzv8A/v/+9f33/fX11ffJzMjKyc/Kx/Xx1fPNx8fGzM/Nzs/Lzs7//hABIWxUk293Pm+qOQAAAAAnMJaYSAFQAFoLCS8wxxaTatL1EAJgp7737gY\u003d","7":"3639","9":0},"xsrf":"ABOvogKaRsVZECZZJU-gDWrOqoP0CSqf7Q:1535467886413"}
Setelah json_decode, tampilannya seperti ini:
Objek dari string json (hati-hati, 175 baris).
objek (stdClass) # 19 (2) {
["result"] =>
objek (stdClass) # 18 (8) {
["1"] =>
array (1) {
[0] =>
object (stdClass) # 1 (8) {
["1"] =>
int (0)
["3"] =>
int (0)
["4"] =>
object (stdClass) # 2 (1) {
["1"] =>
string (120) "AClZvXJ2t4wiEZ / VZ0i54m0Qtqpi2DTqkI1kaPMTRi4LnsQn0iR5K1xBlFpS1xmJV7ko4a6qx5RcTkp7CzVjwoy5QQQQOQQQQQQOQQQQQ
}
["5"] =>
object (stdClass) # 3 (17) {
["1"] =>
int (82)
["2"] =>
int (0)
["3"] =>
int (0)
["4"] =>
string (102) "<div id =" ad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60 "> </div>"
["5"] =>
string (102) "<div id =" ad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60 "> </div>"
["6"] =>
string (355) "<div> Multi-format <span id = 'multi-format-tooltip'> </span> </div> <a class = 'arc-url-link-ellipsis' target = '_ blank' href = ' https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/ 'title =' https: //www.dns-shop.ru/actions/c09a061b-a048-11e8-9547- 00155d03330d / '> https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/ </a> "
["7"] =>
string (1066) "<div class = 'arc-satu-demi-satu-legenda'> Jenis iklan </div> <div class = 'arc-satu-per-satu-data'> Multi-format <span id = 'multi -format-tooltip '> </span> </div> <div class =' arc-one-by-one-legend '> URL Tujuan </div> <div class =' arc-one-by-one-data '> <a class =' arc-url-link-ellipsis 'target =' _ blank 'href =' https: //www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/ 'title = 'https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/'>https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d / </a> </div> <div class = 'arc-satu-demi-satu-legenda'> Domain penerbit </div> <div class = 'arc-satu-per-satu-data'> 4aynikam.ru </div> <div class = 'arc-per-satu-data'> androidphone.su </div> <div class = 'arc-per-satu-data'> androidphones.ru </div> <div class = 'arc-one-by-one-data'> full-repair.com </div> <div class = 'arc-satu-per-data'> howgadget.com </div> <div class = 'arc-one-by-one-legend'> Pengiklan yang terdeteksi <span id = 'adx- advertiser-tooltip '> </span> </div> <div class =' arc-one-by-one-data '> Toko DNS </div> "
["8"] =>
string (98) "<div> <span class = 'arc-impression-score high'> HIGH </span> tayangan </div>"
["9"] =>
object (stdClass) # 4 (3) {
["1"] =>
string (4191) "<a href="https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/" target="_blank"> <img onerror =" this.src = 'data: image / gif; base64, RCw "border = 0 alt =" "> </a>"
["2"] =>
string (4191) "<a href="https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/" target="_blank"> <img onerror =" this.src = 'data: image / gif; base64, R1w "border = 0 alt =" "> </a>"
["3"] =>
string (4191) "<a href="https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/" target="_blank"> <img onerror =" this.src = 'data: image / gif; base64, Rg "border = 0 alt =" "> </a>"
}
["10"] =>
String (291) "https://adwords-displayads.googleusercontent.com/da/b/preview.js?client=asfe-arc-external-preview&obfuscatedCustomerId=5240877441&creativeId=288930210411&htmlParentId=ad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60&sig=ACiVB_yMUjLwDjRO2T-0VAaVuRPt8uLHGQ "
["13"] =>
String (311) "https://adwords-displayads.googleusercontent.com/da/b/preview.js?client=asfe-arc-external-preview&obfuscatedCustomerId=5240877441&creativeId=288930210411&htmlParentId=ad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60&showVariations=true&sig=ACiVB_yMUjLwDjRO2T -0VAaVuRPt8uLHGQ "
["14"] =>
string (69) "https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/"
["15"] =>
string (0) ""
["17"] =>
string (0) ""
["18"] =>
string (8) "Toko DNS"
["20"] =>
string (20) "adv-5594449542310820"
["21"] =>
array (4) {
[0] =>
string (8) "site1.ru"
[1] =>
string (9) "site2.com"
[2] =>
string (9) "site3.com"
[3] =>
string (8) "site4.ru"
}
}
["6"] =>
objek (stdClass) # 5 (3) {
["5"] =>
string (20) "-6668648012302470727"
["7"] =>
array (1) {
[0] =>
string (3) "DNS"
}
["9"] =>
int (0)
}
["7"] =>
int (1)
["9"] =>
objek (stdClass) # 16 (1) {
["3"] =>
array (5) {
[0] =>
objek (stdClass) # 7 (3) {
["1"] =>
objek (stdClass) # 6 (1) {
["1"] =>
string (56) "AClZvXLE9HJbFYq9TrAsXFgV4YkXsQt9lXp1xWjSB5aT5bFBpe4VNgo ="
}
["2"] =>
string (52) "Internet dan telekomunikasi"
["3"] =>
string (217) "Produk dan layanan yang terkait dengan telekomunikasi, termasuk layanan kabel dan satelit dan akses Internet."
}
[1] =>
objek (stdClass) # 9 (3) {
["1"] =>
objek (stdClass) # 8 (1) {
["1"] =>
string (56) "AClZvXKrUJJ3kKBen2scP56BynOtGhf160i1F1LLmtBj3b / oh2dUFg8 ="
}
["2"] =>
string (35) "Ponsel"
["3"] =>
string (359) "Ponsel dan ponsel, serta informasi terkait, seperti spesifikasi teknis dan analisis komparatif produk. Kategori ini tidak termasuk aksesori ponsel."
}
[2] =>
objek (stdClass) # 11 (3) {
["1"] =>
objek (stdClass) # 10 (1) {
["1"] =>
string (56) "AClZvXL4W + khZ4O9SJiu97cTbTs2 + 0Wecf1IVNju8ffd4ysIT9PJ7XY ="
}
["2"] =>
string (73) "Ponsel dan aksesoris untuk mereka"
["3"] =>
string (283) "Ponsel, serta aksesori dan perangkat keras terkait, seperti kasing, monopod untuk narsis, layar keamanan, dan pengisi daya."
}
[3] =>
objek (stdClass) # 13 (3) {
["1"] =>
objek (stdClass) # 12 (1) {
["1"] =>
string (56) "AClZvXLQ3gPoVwjQbokDpB3 + nni4xURwH5 + YlnwkqjYtUowjhiKvk8Q ="
}
["2"] =>
string (45) "PC dan elektronik konsumen"
["3"] =>
string (142) "Produk, layanan, dan informasi yang terkait dengan komputer dan elektronik konsumen."
}
[4] =>
objek (stdClass) # 15 (3) {
["1"] =>
objek (stdClass) # 14 (1) {
["1"] =>
string (56) "AClZvXLKYOGgOROaa32IUxU15jP89AtTM4dV24WKS + daMhqJMTNmeSY ="
}
["2"] =>
string (18) "Teleponi"
["3"] =>
string (181) "Produk, layanan, serta informasi dan sumber daya lain yang berkaitan dengan komunikasi telepon dan suara."
}
}
}
["10"] =>
objek (stdClass) # 17 (1) {
["1"] =>
string (76) "AClZvXLdGOShgJo + BM3apOUAFzQkE41z1 / hiZhIY8eUlC7p7xXPm82P3dq7yXhbEI + tN / YHgdH4P"
}
}
}
["2"] =>
float (0)
["3"] =>
string (5) "60609"
["4"] =>
int (1)
["5"] =>
string (0) ""
["6"] =>
String (168) "ClD3Z2nP2P ///// 1 / ff99fXV98nMyMrJz8rH9fHV883Hx8bMz83Oz8vOzv8A / v / + 9f33 / fX11ffJzMjKyc / Kx / Xx1fPNx8fGzM / NZS / Lzs7 // hABIWxUk293Pm + qOQAAAAAnMJaYSAFQAFoLCS8wxxaTatL1EAJgp7737gY ="
["7"] =>
string (4) "3639"
["9"] =>
int (0)
}
["xsrf"] =>
string (48) "ABOvogKaRsVZECZZJU-gDWrOqoP0CSqf7Q: 1535467886413"
}
Ini adalah contoh tanggapan yang hanya berisi satu deklarasi. Pahami apa yang mungkin.
Dan untuk pertanyaan lain, metode disebut secara manusiawi. Beberapa contoh:
- getWebPropertyMetricsToken
- getAdDisplayLanguages
- getArcSettings
- dapatkanAdNetworkApprovals
- getPubControlsCapabilities
Secara teoritis mungkin. Untuk berperang?
Oke, itu mungkin untuk menyelesaikan komunikasi mereka (secara teoritis), tetapi semua ini akan sia-sia, dan teorinya akan tetap ada jika Anda tidak mengotorisasi di Google.
Otorisasi Atau cara memasukkan Google di php + cURL
Sekali lagi, alat pengembang, keluar dari akun dan lihat pertukaran data. Saya tidak ingat secara detail, karena saya tidak bisa mengerti apa pun di sana. Sejumlah besar JS, tampaknya semacam perhitungan dilakukan langsung pada klien, hasilnya dikirim ke server. Secara umum, hampir tidak mungkin bagi seseorang untuk masuk.
Kami berpikir lebih jauh. Sekelompok JS. Dan jika Anda menonaktifkan JS? Tetapi Google tidak akan menghalangi pengguna tanpa JS kemampuan untuk masuk? Yah, coba tanpa JS. Secara eksternal, jendela otorisasi sudah terlihat jauh lebih mudah. Seperti sebelumnya, pertama-tama masukkan login, dan kata sandi pada halaman berikutnya. Yang paling penting, dalam hal HTML, juga jauh lebih mudah! Tag "form" yang biasa dengan isian "input" yang biasa, meskipun bukan tanpa sekelompok bidang pelindung atau sistem yang tersembunyi. Tetapi bidang tersembunyi bukan masalah, karena apa yang mereka terima pada input diteruskan ke skrip berikutnya. Dan ternyata itu masuk ke Google. Dan otorisasi dua langkah? Lebih lanjut tentang ini nanti. Pertama, Anda perlu memastikan bahwa Anda dapat menarik iklan untuk diperiksa, jika tidak semuanya tidak masuk akal.
Apakah teoretis mungkin dalam praktik?
Google telah masuk - saatnya untuk menguji teori protokol komunikasi yang terurai dalam praktik. Saya harus mengutak-atik eksperimen dan pengamatan, mengamati dengan cermat, dan mencatat tindakan pengguna apa yang menyebabkan kueri, mengidentifikasi elemen kueri yang umum dan berubah, membandingkan nilai panjang yang tidak dapat dipahami yang diterima dari server dengan yang lama sama yang dikirim kembali pada permintaan berikutnya. Itu adalah hutan lebat, yang seiring waktu menjadi lebih jelas dan lebih transparan.
Apa yang harus dilakukan untuk memahami bahwa kelanjutan itu masuk akal?
- Masuk ke pusat .
- Dapatkan daftar iklan.
- Dapatkan iklan tertentu (teks terlebih dahulu).
Masuk ke CPO adalah yang paling sederhana, secara kasar, cukup ikuti tautannya. Ternyata.
DetailKami cukup mengikuti tautannya, kami mendapatkan jawabannya (yang tidak kami gunakan dalam kasus ini). Kami juga perlu meminta dan menyimpan token digital untuk permintaan di masa mendatang.
Pada saat penulisan, AdSense memiliki dua pusat layanan publik. Saya akan menamai mereka dengan syarat lama dan baru.
Untuk CPO lama.
Tidak ada permintaan pos muat:
https://www.google.com/adsense/gwt-properties?pid=pub-8958890276790964&authuser=0&tpid=pub-8958890276790964&ov=3&hl=en
Jawabannya adalah:
<meta name="gwt:property" content="usePropertyService=true"> <meta name="gwt:property" content="applicationType=ASFE3"> <meta name="gwt:property" content="syn.token=ABOvogJ1yQyL9pgHcGYM-J3OLj_9VSh31w:1535115071772"> <meta name="gwt:property" content="syn.token.pb=ABOvogKJ6-xmsNWK4Mbe_H5bT1xXhyj8SQ:1535115071772"> <meta name="gwt:property" content="syn.login=XXXXXX@gmail.com"> <meta name="gwt:property" content="syn.csi.backendUrl="> <meta name="gwt:property" content="syn.helpCenterUrl=//support.google.com/adsense/"> <meta name="gwt:property" content="syn.helpHost=//support.google.com"> <meta name="gwt:property" content="syn.helpCenterUri=/adsense"> <meta name="gwt:property" content="syn.newHelpHost=https://clients6.google.com"> <meta name="gwt:property" content="syn.newHelpCenterUri=/adsense"> <meta name="gwt:property" content="syn.helpCenterGaiaAuthDisabled=false"> <meta name="gwt:property" content="syn.billing3BaseUri=https://bpui0.google.com"> <meta name="gwt:property" content="syn.contextPath=/adsense"> <meta name="gwt:property" content="syn.userLanguage=en-US"> <meta name="gwt:property" content="syn.bruschettaContextPath=/adsense/new"> <meta name="gwt:property" content="userProfileImageUrl=https://lh5.googleusercontent.com/-v7nuoAI4eEQ/AAAAAAAAAAI/AAAAAAAAAAA/AT3-yjmKyg8/s96/photo.jpg"> <meta name="gwt:property" content="userDisplayName=" "> <meta name="gwt:property" content="userSettingsUrl=https://www.google.com/settings"> <meta name="gwt:property" content="googlePlusProfileUrl=https://plus.google.com/me"> <meta name="gwt:property" content="googlePrivacyUrl=http://www.google.com/intl/en_US/policies/privacy/"> <meta name="gwt:property" content="syn.features=562,465,612,604,616,618"> <meta name="gwt:property" content="analyticsHomePageUrl=https://www.google.com/analytics/web/"> <meta name="gwt:property" content="disableDebugIds=true"> <meta name="gwt:property" content="syn.pubControlsCapabilitiesLoadTimeout=5000"> <meta name="gwt:property" content="pid=pub-8958890276790964"> <meta name="gwt:property" content="tpid=pub-8958890276790964"> <meta name="gwt:property" content="syn.asfeGtmCampaignId=GTM-K7WZ">
Kita membutuhkan baris keempat, yaitu "syn.token.pb". Kami menyimpan nilai ini untuk pembuatan kueri lebih lanjut.
Untuk CPO baru.
Tidak ada permintaan pos muat:
https://www.google.com/ads-publisher-controls/acx/5/darc/loader?onearcClient=adsense&pc=ca-pub-8958890276790964&tpid=pub-8958890276790964&hl=en
Jawabannya adalah:
(function() {function loadAsyncOrDefer() {var scriptElement = document.createElement('script'); scriptElement.src = 'https:\/\/ssl.gstatic.com\/ads-publisher-controls\/onearc_20180822-12_RC00\/darc\/arc_app.dart.js';scriptElement.type = 'application\/javascript';scriptElement.defer = true;scriptElement.nonce = window['acxCspNonce'];scriptElement = document.head.appendChild(scriptElement); if ('_resourceTimingBuffer' in window) {_resourceTimingBuffer.add(scriptElement.src);}};loadAsyncOrDefer();})();window['__darc_app_params'] = {'onearcClient': 'ADSENSE','hl': 'ru','pc': 'ca-pub-8958890276790964','tpid': 'pub-8958890276790964',};window['__app_metadata'] = {'token': 'ABiMD8TT9vzK99SFB7iaI0ssBySxT9jjrQ:1535116725529','pre': '\/ads-publisher-controls\/acx','scs': 'https:\/\/ssl.gstatic.com\/ads-publisher-controls\/onearc_20180822-12_RC00','oacf': '\x7b\x221\x22:\x5b5,25,22,8,27,32,43,44,45,48,49,5,25,22,8,27,32,43,44,45,48,49,29,46\x5d\x7d','hats': 'ibhswcm2x2iztju5i6jbbzlkma',};
Urutan yang kita butuhkan ada di sini:
'token': 'ABiMD8TT9vzK99SFB7iaI0ssBySxT9jjrQ:1535116725529'
Mendapatkan daftar adalah tugas yang menarik, karena Anda harus melewati banyak pengaturan - beri tahu kami apa yang ingin kami terima (jenis iklan, dicentang / baru / diblokir, jumlah iklan, dll.). Ditambah token XSRF digital per permintaan. Ternyata. Sebagai tanggapan, sejumlah besar data masuk, yang bahkan berisi thumbnail gambar dari situs-situs tempat iklan itu berada. Dan, tentu saja, tautan ke pengumuman.
DetailKonsep upaya saya telah disimpan untuk mencari tahu parameter mana yang bertanggung jawab untuk apa. Saya memuliakan mereka sedikit,
memotong semua tikar dan emotikon dan mempostingnya di sini. Pertama akan ada urutan untuk CPO lama, dan kemudian untuk yang baru.
Selanjutnya, saya akan memanggil nama metode
permintaan (hanya untuk CPU baru, untuk metode lama itu ditunjukkan dalam tubuh permintaan) dan string json, karena mereka adalah "pembawa" informasi, segala sesuatu yang lain (alamat, header, token digital, parameter lainnya) - "pembungkus ", Mereka tidak mendasar, saya akan menceritakan semua tentang ini nanti.
Untuk CPU lama (variabel json request params):
{ "1":"ca-pub-8958890276790964", "2":{ "1":0, // , "2":32, // - "3":0, // 0 - , 1- "4":{ "1":{"1":"- "} // }, "5":{ "1":"video" // "2":1, // , "3":1, // "6":7, // "16":[0], // 0 - ; 1 - ; 2 - . . "17":0 // } }, "3":"-3945261286198141534" //, }
Dekripsi adalah, kami membentuk permintaan dan kami menerima jawabannya.
Untuk CPO lama, pertama-tama Anda perlu mendapatkan token - buat permintaan lain sebelum meminta iklan:
{"method":"getWebPropertyMetricsToken","params":"{\"1\":\"ca-pub-8958890276790964\"}","xsrf":"ABOvogKJ6-xmsNWK4Mbe_H5bT1xXhyj8SQ:1535115071772"}
Jawabannya adalah:
{"result":{"1":{"1":{"1":"AClZvXKte+4mEwsFB7kw20LrbWQ6jOMxmK8j4At4Vxqc7w+5dDDYWIx2k1ldCvvGbAT59UClLSkQty6zyZZQSmgxKvpKhq22bKRfGy8ywt0B5L8WE53vo+YtI8ixM8Xe0RPixTjPtOLQA8sCZod+hvHxqU5Depi3I9XUV6JMn8uCOg67m+5oe5TT1L0OytnUBDIsjAaQ+kcldN23yGoppKKCs2Zf5XI6i7nk5QHehS8wvsDlugvkKSU3fUo3J+ZHJvoUXyCGLP3lP9Gh+6fOMir/SLrOJx8udRbtjTJhLsvXTXUN2QbjcEfFFAIaWfgMr5euHtYwYYWuMoI5ofZTc9L8sCY5pA0Q/CWyZ6QLH85XI70vxH6cBZtsnfrPLRh18cxSxFgzXuAwPHW8+CueCznqiHcY7gOhxQc2YWmSgwMIP9Cpgr089dWoB58wulcK0g+EqnTJiQdI9MMUj4zzLpu5DYja5ftP7lF3jeCSuKT9q70B9OqMDvlGlruZd2hhHe3k5S+LoyWo/4WZDUTvWpCMmnPzCP3R4OIQnrhS0s5ffOVxjyNHrXJXtrNhppap3BY4iByIn1cowMfVFfx3hNep0JW59db9fVuXKaSy/mqHZKC1ToRM/UyCoSZ9ZjY/Ot091ptURLRYoTFal5TBbMKISgxn5UCz4vSoxVe1fC64dwXHatSzCCg9AjJOpKR4p/9smxOaKg73pmMHsEY98I6TJhvaeJ9o6lcHsG8PZnB6xNS4ZJHBtN1baHkrCHOfqaepMVyRCF2kPNhr9SgujjTTbiKGMUO3UVamOQQ5/EckTgFMr0PIda7PPw7op8qFEhxZmkoo9KgERcYLGHxzGePjfo0IiNbf7k50lgDipwk5ag3CI0tw3CtDicQn6isHwKOmlfSctrEGv/Fjlmcgjhl1sTAL/rTWxDCABKN7/OhdysBAOq0j6viFgzjM8WI0ZuYPIVIm19CQ+YGcOx77oiyxev+3sAj7uSJoYFslmgiZV4jrF5P+b+U/5fknRf2Ho8plAUh4AHweXMeaPFYZAYooe6jC79EzgizqXvx1H/HrKKQcaXdDZ1ivoOM/7DtzJbawzO7ALUnHkqR1ZYmw3+3E/pmsDXedYgzERWYWvJltS+P46iWYOS43SUVw+whDWZnjJOwVOFFLDWcg4ykfzNmbq4B/vUibrV1dCiRpTIXSP92xk1I8MCfQGiptqo5MiKttqJ9Orj7nrGXEDz5pJBTTem919nz5rNIjI/sus3GZ+G4rBE+9i1sJN0jxszvpRD2AKsl1KSOrPCuOBhpNbD2HnFgQd+EUw8CpH2MLZlrZ8l3cqzDVc5aeCQ1eiUKlONlZpIxZi5wE5HyKZRxC8ljtX5xe+Fpg8R8/yDarvAkjeb0yKzN/e893nEVz3CmF68pphNp71kjJtvwBS2JtSWhFc81Ys51GEw\u003d\u003d"}}},"xsrf":"ABOvogJLbcTkcBxU_TCJddIrW4L-mVwPcw:1535115072920"}
Token besar ini ("1": "AClZ ...") kita perlu meminta iklan.
Minta Iklan:
{"method":"searchArcApprovals","params":"{"1":"ca-pub-8958890276790964","2":{"1":0,"2":24,"3":0,"4":{"1":{"1":"AClZvXKte+4mEwsFB7kw20LrbWQ6jOMxmK8j4At4Vxqc7w+5dDDYWIx2k1ldCvvGbAT59UClLSkQty6zyZZQSmgxKvpKhq22bKRfGy8ywt0B5L8WE53vo+YtI8ixM8Xe0RPixTjPtOLQA8sCZod+hvHxqU5Depi3I9XUV6JMn8uCOg67m+5oe5TT1L0OytnUBDIsjAaQ+kcldN23yGoppKKCs2Zf5XI6i7nk5QHehS8wvsDlugvkKSU3fUo3J+ZHJvoUXyCGLP3lP9Gh+6fOMir/SLrOJx8udRbtjTJhLsvXTXUN2QbjcEfFFAIaWfgMr5euHtYwYYWuMoI5ofZTc9L8sCY5pA0Q/CWyZ6QLH85XI70vxH6cBZtsnfrPLRh18cxSxFgzXuAwPHW8+CueCznqiHcY7gOhxQc2YWmSgwMIP9Cpgr089dWoB58wulcK0g+EqnTJiQdI9MMUj4zzLpu5DYja5ftP7lF3jeCSuKT9q70B9OqMDvlGlruZd2hhHe3k5S+LoyWo/4WZDUTvWpCMmnPzCP3R4OIQnrhS0s5ffOVxjyNHrXJXtrNhppap3BY4iByIn1cowMfVFfx3hNep0JW59db9fVuXKaSy/mqHZKC1ToRM/UyCoSZ9ZjY/Ot091ptURLRYoTFal5TBbMKISgxn5UCz4vSoxVe1fC64dwXHatSzCCg9AjJOpKR4p/9smxOaKg73pmMHsEY98I6TJhvaeJ9o6lcHsG8PZnB6xNS4ZJHBtN1baHkrCHOfqaepMVyRCF2kPNhr9SgujjTTbiKGMUO3UVamOQQ5/EckTgFMr0PIda7PPw7op8qFEhxZmkoo9KgERcYLGHxzGePjfo0IiNbf7k50lgDipwk5ag3CI0tw3CtDicQn6isHwKOmlfSctrEGv/Fjlmcgjhl1sTAL/rTWxDCABKN7/OhdysBAOq0j6viFgzjM8WI0ZuYPIVIm19CQ+YGcOx77oiyxev+3sAj7uSJoYFslmgiZV4jrF5P+b+U/5fknRf2Ho8plAUh4AHweXMeaPFYZAYooe6jC79EzgizqXvx1H/HrKKQcaXdDZ1ivoOM/7DtzJbawzO7ALUnHkqR1ZYmw3+3E/pmsDXedYgzERWYWvJltS+P46iWYOS43SUVw+whDWZnjJOwVOFFLDWcg4ykfzNmbq4B/vUibrV1dCiRpTIXSP92xk1I8MCfQGiptqo5MiKttqJ9Orj7nrGXEDz5pJBTTem919nz5rNIjI/sus3GZ+G4rBE+9i1sJN0jxszvpRD2AKsl1KSOrPCuOBhpNbD2HnFgQd+EUw8CpH2MLZlrZ8l3cqzDVc5aeCQ1eiUKlONlZpIxZi5wE5HyKZRxC8ljtX5xe+Fpg8R8/yDarvAkjeb0yKzN/e893nEVz3CmF68pphNp71kjJtvwBS2JtSWhFc81Ys51GEw\u003d\u003d"}}},"3":""}","xsrf":"ABOvogI3FCm29t4pdIded8L-Q98R0Voy-Q:1535121289188"}
Saya menerjemahkan bagian 2 dari variabel params:
Google, , :
("1":0),
24 ("2":24),
("3":0),
: AClZvX....
Sejumlah parameter dapat dihilangkan, mereka mengambil nilai default:
- jenis iklan: semua;
- periode: semua tersedia;
- kunci yang diprediksi: tidak;
- hanya menunjukkan yang tidak terverifikasi: tidak.
Puluhan atau ratusan kilobyte merespons, tergantung pada jumlah iklan yang diminta. Hal yang paling sulit adalah grafik “stretched” dalam teks (data: image / gif; base64 ....). Dan jika tidak ada yang tidak terverifikasi, jawabannya sederhana:
{"result":{"4":1,"5":"","8":"0","9":0},"xsrf":"ABOvogLWqmyC7KH1zfvmPxk-Y69-Jzj5XQ:1535115074392"}
Jika ada iklan, mereka akan dimuat di sini: hasil -> {5}.
Untuk CPO baru:
{ "1":"ca-pub-8958890276790964", "2":{ "1":10, // , "2":7, // - "3":11, // - 10; - 1; - 11; "5":{ "6":3 // "7":3534 // "14":"en" // "16":[0] // 0 - ; 1 - ; 2 - . "18":"dfd.com" // "24":"video" // }, "7":""}, // "3":"-2876348936240321457", // "5":true // . . }
Permintaan awal tidak perlu dilakukan, Anda dapat langsung meminta iklan.
CariAkses (ini adalah metode)
{"1":"ca-pub-8958890276790964","2":{"2":100,"3":11,"5":{"16":[0]},"7":""},"5":true}
Google, , :
100 ("2":100),
("3":11),
("5":{"16":[0]},
("7":"")
Parameter dan default opsional:
- nomor seri pengumuman yang diminta pertama: 0;
- periode: semua tersedia;
Sebagai tanggapan, kami mendapatkan hampir sama seperti dalam kasus CPO lama. Ini berbeda hanya dalam satu kata - nama wadah data. Di yang lama itu adalah "hasil", di yang baru itu adalah "default".
Mendapatkan iklan tertentu itu sederhana, ambil tautan dari jawaban sebelumnya dan unduh iklannya. Tidak ada perlindungan di sini, akses gratis untuk semua orang.
DetailTautan ke iklan. Kami akan mencarinya di jawaban sebelumnya, di mana kami menerima banyak, banyak kilobyte teks sebagai tanggapan atas permintaan iklan.
Agar tidak ada terlalu banyak kode yang tidak dapat dipahami, saya memberikan jawaban atas permintaan satu iklan (dan bahkan saat itu tanpa ampun dipotong, itu 10 kali lebih banyak, hanya hal terpenting yang tersisa saat ini):
{"result":{"1":[{"1":0,"3":0,"4":{"1":"AClZvXJ2t4wiEZ/VZ0i54m0Qtqpi2DTqkI1kaPMTRi4LnsQn0iR5K1xBlFpS1xmJV7ko4a6qx5RcTkp7CzVjwoy5UDSWZ5jOCPLGRcoQdDt+wOk46bdr0yA\u003d"},"5":{"1":82,"2":0,"3":0,"4":"\u00GQ","13":"https://adwords-displayads.googleusercontent.com/da/b/preview.js?client\u003dasfe-arc-external-preview\u0026obfuscatedCustomerId\u003d5240877441\u0026creativeId\u003d288930210411\u0026htmlParentId\u003dad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60\u0026showVariations\u003dtrue\u0026sig\u003dACiVB_yMUjLwDjRO2T-0VAaVuRPt8uLHGQ","14":"https://www.dns-shop.ru/actions/c09a061b-a048-11e8-9547-00155d03330d/","15":"","17":"","18":"","20":"adv-5594449542310820","21":["domain1.com","domain2.com"]},"6":{"5":"-6668648012302470727","9":0},"7":1,"9":{"3":[{"1":{"1":"AClZvXLE9HJbFYq9TrAsXFgV4YkXsQt9lXp1xWjSB5aT5bFBpe4VNgo\u003d"},"2":"\u041/YHgdH4P"}}],"2":0.0,"3":"59917","4":1,"5":"","6":"ClD3Z2nP2P/////1/ff9oPjm7gU\u003d","7":"5751","9":0},"xsrf":"ABOvogJJJuNM1d0i22yN48ibBAY8vpvC_A:1535125743731"}
Dari parameter {13} Anda bisa mendapatkan tautan ke iklan:
https://adwords-displayads.googleusercontent.com/da/b/preview.js?client=asfe-arc-external-preview&obfuscatedCustomerId=5240877441&creativeId=288930210411&htmlParentId=ad-parent-id-6A2DE3D206234468F53C743C0EEACD67A59E6C5B62C0371F770419826258CB1AD9591F60&showVariations=true&sig=ACiVB_yMUjLwDjRO2T-0VAaVuRPt8uLHGQ .
Untuk beberapa waktu (berhari-hari, mungkin berminggu-minggu) tautannya akan hidup dan siapa pun bisa mendapatkan pengumuman melalui tautan itu. Ada sekitar 100 - 150 kilobyte dan di bagian paling bawah (dan tidak hanya) Anda dapat menemukan kutipan dari teks iklan.
Selain itu, ini adalah parameter penting - ini adalah pengidentifikasi internal iklan, yang akan kami gunakan untuk mengelolanya lebih lanjut (memblokir / membuka blokir iklan, memblokir / membuka blokir akun AdWords yang membuka iklan ini, meminta statistik tayangan, menetapkan yang ditandai sebagai "dicentang", mengirim pesan tentang pelanggaran aturan) . Itu disimpan di sini:
hasil -> {1} -> {4} -> {1}.
Ini terlihat seperti ini:
AClZvXJ2t4wiEZ/VZ0i54m0Qtqpi2DTqkI1kaPMTRi4LnsQn0iR5K1xBlFpS1xmJV7ko4a6qx5RcTkp7CzVjwoy5UDSWZ5jOCPLGRcoQdDt+wOk46bdr0yA=
Panjangnya adalah 120 karakter (dengan pengecualian langka).
Ada banyak informasi dalam aliran data ini:
- Jenis iklan.
- URL tujuan
- Domain tempat domain itu dibuka.
- Informasi tentang pengiklan (nama, jika ada, dan pengidentifikasi).
- Karakteristik kualitatif dari jumlah tayangan, misalnya, "tinggi".
- Tiga thumbnail halaman arahan dalam bentuk data: gambar.
- Kategori milik iklan tersebut, misalnya, Telephony.
Hasilnya diperoleh - cocok untuk otomatisasi. Selanjutnya, urutan fungsi ditempatkan, karena prototipe kerja itu mengerikan, saya hanya ingin cepat memahami apakah proses akan otomatis. Versi pertama ditawarkan kepada orang-orang dan penyelesaian serta koreksi kesalahan dimulai. Masalah pertama adalah bahwa "dua tahap" tidak bisa masuk.
Otorisasi 2 langkah
Jika Anda pergi untuk memeriksa tampilannya ketika JS dimatikan, Anda dapat melihat banyak opsi otorisasi: kata sandi SMS, kata sandi satu kali dari selembar kertas, melalui aplikasi ...
Otomatiskan setiap opsi sehingga semua orang merasa nyaman - Anda bisa menjadi gila.
Penyelamatan Pengembang
Ketika tanpa JS di Chrome saya melihat mekanisme otorisasi dua tahap, saya melihat referensi ke pilihan metode lain, saya terpikat pada hal ini. Metode apa pun yang dipilih secara default, selalu ada opsi untuk memilih dan memilih SMS. Ini adalah keselamatan nyata. Tentu saja, saya harus memeriksa metode yang dipilih secara default, dan dalam kasus metode yang "salah", "tekan" tombol ubah dan pilih "kata sandi satu kali melalui SMS".
Untuk otorisasi itu sendiri, saya baru saja menyimpan data antara dari formulir ke dalam file (kumpulan yang sama dari semua bidang tersembunyi) dan formulir entri kata sandi satu kali. Itu saja, "dua tahap" juga bisa masuk.
Penyempurnaan proses pembuatan
Tugas utama selesai - siapa pun dapat menginstal dan menggunakan solusi otomatis untuk memfilter iklan secara berkala di situs mereka.
Selanjutnya datang perbaikan, perbaikan, koreksi kekurangan ...... diidentifikasi oleh pengguna dan secara independen, penyempurnaan desain eksternal (intuitif untuk penulis tidak dapat dipahami oleh hampir semua orang).
Berbagai fungsi dan filter juga diselesaikan dan ditambahkan untuk mencari iklan yang tidak menyenangkan. Misalnya, untuk secara otomatis mendeteksi hash huruf Sirilik dan Latin. Pengiklan normal tidak membuat iklan seperti ini, tetapi kadang-kadang ada kesalahan dalam bentuk mencampurkan satu karakter Rusia ke dalam kata-kata Rusia (kesalahan populer dalam filter juga diperhitungkan).
Pengaya ditambahkan untuk kenyamanan:
- Daftar pengiklan yang diblokir.
- Daftar domain yang diblokir.
- Label pendapatan.
- Tautan AdSense.
Daftar pengiklan yang diblokir adalah kesempatan untuk menonton dan mengedit, dan itu lebih nyaman (tetapi tidak lebih cantik dalam penampilan) daripada di antarmuka biasa! Plus ada kemampuan untuk membuka "dalam jumlah besar", yang tidak dalam AdSense biasa.
Daftar domain yang diblokir mirip dengan daftar sebelumnya.
Kemampuan untuk bekerja dengan AdX (melalui AdManager, tempat AdX baru-baru ini pindah).
Ada banyak perbaikan, yang paling menarik menurut saya tercantum di atas.
Fungsi mengirim permintaan dan menerima hasil
Sebelumnya, saya menulis tentang permintaan dalam bentuk string json, dan berjanji untuk membukanya lebih detail nanti.
Ketika semua ini dilakukan oleh CPO baru, belum ada, oleh karena itu semuanya dilakukan untuk yang lama, kita akan mulai dari itu.
Komunikasi dengan CPO lama
Dengan bantuan pengamatan, dimungkinkan untuk mengetahui bahwa pertukaran utama permintaan pergi ke satu alamat:
https://www.google.com/adsense/gp/creativeReview?ov=3&pid=pub-8958890276790964&authuser=0&tpid=pub-8958890276790964(&hl=id)
Apa yang tidak selalu dalam tanda kurung hanyalah parameter yang menunjukkan bahasa jawaban, itu dapat diterapkan ke hampir semua produk Google. Ini penting, karena saya menggunakan bahasa Inggris di mana-mana dan perangkat lunak mengenali beberapa parameter, menunggu jawaban dalam bahasa Inggris.
Selain alamat, ada bentuk standar dari post-data yang ditransmisikan (di alat pengembang mereka terlihat di bagian "Minta Payload") - ini adalah string json dengan variabel metode, params, dan xsrf:
{"method":"getArcSettings","params":"{\"1\":[\"ca-pub-8958890276790964\"]}","xsrf":"ABOvogJlvXKkBQUbPYEsM04recgCsukFMg:1535467881599"}
Metode - semuanya tampak jelas di sini.
params - tergantung pada metode, format standar sendiri untuk string json yang ditransmisikan.
xsrf - tanda terima awal token digital yang kami gunakan untuk permintaan dijelaskan di atas, dan dalam respons kami menerima token XSRF baru untuk permintaan berikutnya.
Jawabannya juga datang dalam bentuk string json dari bagian hasil (informasi yang diminta) dan xsrf:
{"result":{"1":[{"1":"ca-pub-8958890276790964","2":{"1":"ca-pub-8958890276790964","2":0},"3":{"1":"ca-pub-8958890276790964","2":0}}]},"xsrf":"ABOvogIH7wJjD8t1xmuu8WbGplQowqjjJA:1535467883406"}
kode fungsi php function creative_review($method, $params) { $xsrftoken = file_get_contents($GLOBALS['xsrftoken_file']); $creativeReview = new stdClass();
post- — curl_post($url, $postfields, $referer, $myheaders).
.
$myheaders :
accept-language:en-US;q=1,en;q=0.4
content-type:application/javascript; charset=UTF-8
$GLOBALS['creative_review_req_string']:
https://www.google.com/adsense/gp/creativeReview?ov=3&pid=pub-8958890276790964&authuser=0&tpid=pub-8958890276790964&hl=en
, .
$GLOBALS['arc_tab_req_string']:
https://www.google.com/adsense/new/u/0/pub-8958890276790964/main/allowAndBlockAds?webPropertyCode=ca-pub-8958890276790964&tab=arcTab
referer , .
Komunikasi dengan CPO baru
Di sini dengan alamat untuk permintaan lebih rumit - itu berubah. Hanya ada bagian umum awal. Skemanya adalah sebagai berikut:Bagian umum + metode + '?' + GET parameter + rpcTrackingId = <pengulangan parameter GET sebelumnya dalam pengkodean URL> + ':' + <nomor urut permintaan menggunakan metode yang sama dalam ... secara umum, sampai pengguna me-refresh halaman>.https://www.google.com/ads-publisher-controls/acx/5/proto/creativereview/GetArcSettings?hl=ru&pc=ca-pub-8958890276790964&onearcClient=adsense&rpcTrackingId=%2Fads-publisher-controls%2Facx%2F5%2Fproto%2Fcreativereview%2FGetArcSettings%3Fhl%3Dru%26pc%3Dca-pub-8958890276790964%26onearcClient%3Dadsense%3A1
XSRF-token di sini dilewatkan di header 'x-framework-xsrf-token' dan dapat digunakan kembali, oleh karena itu, tidak ada jawaban dan tidak perlu memperbaruinya secara konstan.kode fungsi php function creative_review_new($method, $params) { if (!isset($GLOBALS['xsrftoken_new'])) $GLOBALS['xsrftoken_new'] = file_get_contents($GLOBALS['temp_folder'] . 'xsrftoken_new.txt'); $myheaders = $GLOBALS['myheaders_new']; $myheaders[] = 'x-framework-xsrf-token:' . $GLOBALS['xsrftoken_new']; $query['pc'] = 'ca-' . $GLOBALS['pub_id']; $query['onearcClient'] = 'adsense'; $query['hl'] = 'en_US'; foreach ($query as $index => $value) $rpc[] = $index . '=' . $value; if(!isset($GLOBALS[$method_count])) { $GLOBALS[$method_count]=1; } else { $GLOBALS[$method_count]++; } $append = ':'.$GLOBALS[$method_count]; $query['rpcTrackingId'] = $GLOBALS['creative_review_new_string'] . $method . '?' . implode('&', $rpc) . $append; $query = http_build_query($query); $url = 'https://www.google.com' . $GLOBALS['creative_review_new_string'] . $method . '?' . $query; $result = curl_post($url, $params, $GLOBALS['new_arc_tab_req_string'], $myheaders); if (mb_strpos($result, 'Error 400 (Not Found)', 0, 'UTF-8') !== false) { return '-32000 XSRF token validation'; } $list = explode("\n", $result, 2); $result = $list[1]; $result = json_decode($result);
post- — curl_post($url, $postfields, $referer, $myheaders).
$myheaders (javascript → json):
accept-language:en-US;q=1,en;q=0.4
content-type:application/json; charset=UTF-8
$GLOBALS['creative_review_new_string']:
/ads-publisher-controls/acx/5/proto/creativereview/
.
$GLOBALS['new_arc_tab_req_string']:
https://www.google.com/adsense/new/u/0/pub-8958890276790964/arc/ca-pub-8958890276790964
referer , .
. «» . (« 10 , 30-»). , .
Permintaan Daftar Domain dan Fungsi Manajemen
Ini hampir sama dengan fungsi berkomunikasi dengan CPO lama, hanya berbeda dalam alamat banding.kode fungsi php function blocking_controls($method, $params) { $xsrftoken = file_get_contents($GLOBALS['xsrftoken_file']); $creativeReview = new stdClass();
$GLOBALS['blocking_controls_req_string']:
https://www.google.com/adsense/gp/blockingControls?ov=3&pid=pub-8958890276790964&authuser=0&tpid=pub-8958890276790964
.
Token XSRF disimpan ke disk dalam file, ini diperlukan untuk permintaan untuk memblokir / membuka blokir iklan, akun AdWords, dan tindakan lain untuk bekerja secara langsung dari panel kontrol tanpa perlu meminta yang baru.Memproses tanggapan yang diterima
Data datang baik dalam bentuk string json (jawaban yang diterima oleh tiga fungsi di atas) dan dalam bentuk kode JS (deklarasi yang diminta), di mana serangkaian karakter "dienkripsi" dengan pengkodean heksadesimal (\ x <kode karakter dua karakter karakter>).Kutipan dari iklan yang dirujuk di atas:target \ x3d_blank judul \ x3d \ x22 \ x22 \ x3e \ x3cspan \ x3e Beli Xiaomi Redmi S2 dan dapatkan Redmi 5 \ x3cbr \ x3e sebagai hadiah. Dari 24 Agustus hingga 26 Agustus. \ x3cbr \ x3ePelajari lebih lanjut di situs.
Untuk json, ada fungsi di php yang akan menghasilkan setidaknya sebuah objek, setidaknya sebuah array.Untuk "Kosoik" di suatu tempat di jaringan saya menemukan fungsi kecil yang membawa data ke bentuk manusia.kode fungsi php function hex_repl($html) { $i = 256; while ($i >= 0) { $hex = dechex($i); $html = str_ireplace("\x$hex", chr($i), $html); $i--; } return $html; }
Hasil dekripsi:target = _blank title = ""> <span> Beli Xiaomi Redmi S2 dan dapatkan Redmi 5 Situs sebagai hadiah. Dari 24 Agustus hingga 26 Agustus. <br> Informasi lebih lanjut di situs.
Pengakuan Iklan
Teks . Saya mulai dengan mereka. Mereka lebih penting dan, ternyata, semuanya jauh lebih mudah dengan mereka. Hanya ada dua jenis: lama, dengan satu heading (yang hampir hilang) dan baru, dengan dua heading.Pengumuman sudah datang dalam bentuk kode HTML, tetapi selain pengumuman, responsnya berisi banyak data yang tidak kita perlukan - kode Javascript (bahkan tidak sampai ke bagian bawah kode ini).Pengakuan akhirnya datang ke langkah-langkah berikut:- memangkas "awal yang besar", hanya menyisakan "ekor", yang berisi teks pengumuman;
- Membuat objek menggunakan kelas DOMDocument
- cari dalam loop untuk nilai-nilai yang diinginkan: judul, teks iklan, teks tautan.
Judul, teks, dan tautan berisi kelas-kelas tertentu, dan pengenal "menempel" pada mereka.Di mana dan fungsi memproses iklan teksrhtitleline1 — 1;
rhtitleline2 — 2;
rhtitle — ( );
rhbody — ;
rhurl — URL.
function text_ad($html) { $list = explode('</head>', $html); $ad_html = array_pop($list); unset($list, $html); $dom = new DOMDocument('1.0', 'UTF-8'); @$dom->loadHTML($ad_html); unset($ad_html); foreach ($dom->getElementsByTagName('a') as $a_node) { if (stripos($a_node->getAttribute('class'), 'rhtitleline1') !== false) { $ad['header1'] = $a_node->textContent; continue; } if (stripos($a_node->getAttribute('class'), 'rhtitleline2') !== false) { $ad['header2'] = $a_node->textContent; continue; } if (stripos($a_node->getAttribute('class'), 'rhbody') !== false) { $ad['body'] = $a_node->textContent; continue; }
— . .
$fulltext — .
utf8_decode . DOMDocument . .
Grafis . Mereka hanya memeriksa URL tujuan. Tidak ada pengenalan gambar, juga menyimpan gambar untuk diperiksa (karena gambar, jika diinginkan, juga dapat dilihat di CPO). Saya tidak melihat alasan di sini untuk menemukan kembali roda (kemungkinan besar kurva dan tidak ada yang membutuhkannya).Multimedia . Di bawah nama umum ini menyembunyikan sejumlah iklan yang berbeda:- Multi-Format.
- Media (Rich Media).
- Template khusus (HTML5).
Untuk multi-format 3, fungsi pengenalan dibuat tergantung pada jenis pengumuman.Untuk media, 2 fungsi telah dibuat.Untuk HTML5, 3 fungsi telah dibuat.Penyaringan
Setelah mengenali iklan, proses penentuan keberatan dengan kriteria yang berbeda dimulai (semua filter disertakan, beberapa dapat disesuaikan):- Kehadiran di domain "blogspot.com".
- Kehadiran dalam kata-kata campuran huruf-huruf Sirilik dan Latin.
- Kehadiran kata-kata "buruk" (daftar kata-kata "buruk" dapat disesuaikan oleh pengguna).
- Setelah pengguna diarahkan ke domain selain yang asli.
Laporan kerja
Berdasarkan hasil filtrasi, laporan kemajuan dikompilasi.Itu dibangun dalam bentuk daftar iklan untuk setiap filter dalam kolomnya, ditambah grafik untuk iklan "baik", informasi berikut dimasukkan dalam laporan:- Identifier dan nama tekstual pengiklan, jika ada.
- Alasan pemblokiran (hanya untuk diblokir).
- Judul dan teks iklan.
- URL tujuan dan tampilan.
- Tanggal dan waktu verifikasi.
- Jumlah total penayangan yang berhasil mendapatkan iklan (hanya untuk diblokir).
- Tautan untuk memblokir / membuka blokir iklan dan akun pengiklan.
- Tautan untuk memblokir URL atau domain tujuan.
- Tautan untuk mengajukan keluhan tentang pengumuman (tersedia dalam CPO baru).
- Tautan untuk menambahkan bagian iklan yang berbeda ke daftar putih.
- Tautan untuk menghapus iklan dari laporan.
Tampilan didasarkan pada CPO lama (dan satu-satunya pada saat desain).
Dapat DiklikKetika dilihat dari ponsel, setiap kolom menempati seluruh lebar layar dan tombol muncul untuk memilih kolom yang Anda lihat.Sedikit tentang keamanan
Anda dapat membuat akses terbatas ke panel kontrol (untuk mengendalikan diri Anda dari satu tempat) atau "di seluruh dunia" sehingga Anda dapat mengontrol dari mana saja.Kasing pertama aman - tidak ada yang cocok jika ia tidak duduk di PC yang berfungsi. Dalam kasus kedua, alamat tempat perangkat lunak berada harus dirahasiakan, ditambah kata sandi untuk memasuki panel kontrol disediakan. Untuk mencegah bocornya alamat rahasia Anda saat mengikuti tautan ke situs pihak ketiga (dari iklan), berikut ini dilakukan:Hasil otomatisasi
24 jam 7 hari seminggu, semua yang baru muncul dalam pengumuman CPO diperiksa dalam interval beberapa menit. Akibatnya, keberatan (sesuai dengan kriteria yang ditentukan oleh pengguna) dikirim ke bagian "diblokir". Saya tidak pernah menghitungnya dengan pasti, tetapi dari sekitar 100 buah yang diblokir, 90 - 95 dikunci karena alasan yang baik. Dari seratus perangkat lunak "bersih", rata-rata, kurang dari satu "buruk".Apa yang saya sebut "iklan buruk"? Segala sesuatu yang mengarah pada langganan seluler, segala sesuatu yang menawarkan "unduh", cukup unduh atau "unduh file" sama sekali tidak spesifik, semua yang menawarkan "tonton video", sekali lagi tanpa detail, segala sesuatu yang mengarah pada ketiadaan sama sekali , sebagaimana ditunjukkan dalam judul dan teks pengumuman, penyebutan kasino di negara-negara di mana hal ini dilarang oleh hukum.Akibatnya, saya praktis tidak menghabiskan waktu untuk mencari dan memblokir iklan, dan iklan kasino dan berbagai toko grosir yang didistribusikan melalui situs saya menjadi sepuluh kali lebih sedikit (sayangnya, masalahnya belum sepenuhnya diselesaikan - saya tidak berhenti memikirkan hal ini).Pencurian dalam bentuk langganan yang tidak disadari menjadi semakin berkurang tanpa kartu MegaFon!Dan di mana kartu MegaFon masuk? Tetapi tidak semua pengguna situs kami memiliki MegaFoncard dan analog PPSOS lainnya.Karena itu, tuan-tuan, lindungi pengunjung Anda dari tagihan yang tidak diinginkan sendiri!Proyek open source ada di GitHub .