A unique service for generating traffic from VKontakte. What is adult and how to make money from it

If you work in traffic arbitration or promote your websites, you probably noticed groups in the top results of Yandex or Google social network In contact with. If you don't know, I'll tell you little secret: VK groups, due to the huge trust of the social network itself. networks, themselves climb to the top for mid and low frequency keys, without any link building or other promotion. And this topic will be useful to anyone who makes money online, because... This is free, but high-quality traffic. You can send it either to your websites or immediately monetize it through. For affiliate traders, this is a real treasure, because... you don’t need to buy traffic from somewhere unknown, but you can get it using the keys you need, which will allow you to achieve excellent conversions, which you will never achieve using .

There are many keys, but only two hands

But here the question arises that in any topic there are a lot of low and midrange keys that need to be used to create groups, and you simply don’t have enough hands and time to do all this without outside help. For this purpose, the UrlWave service was created, which will be discussed below.
The purpose of the service is automatic creation VKontakte groups according to your keywords, of which there may be hundreds and even thousands. If you don't know how to collect keys, then I recommend using Key Collector, which is the best software for collection semantic core.

UrlWave service capabilities

The service has the ability to uniquely identify each group by adding unique avatars, descriptions, pictures and posts. There is also a possibility fast indexing created groups via Twitter. The functionality for reading positions in search engines and checking group indexing is available.
If you plan to create a large number of groups, then you need VK users from whom you will create them. Users can either be purchased or created manually, fortunately this is a matter of a few minutes. No more than 30 groups are created per day per user, keep this in mind. I also do not recommend creating more than 200 groups per user.
At manual creation accounts, use the activation service sms-reg.com, you can also buy there ready-made accounts but 12 rubles. Personally, I would advise creating new ones, it’s more reliable.

Attendance statistics

It is possible to view group attendance statistics. Below is a screenshot of the attendance statistics of my groups, only in one of the topics, so that you have an idea of ​​​​how much traffic you can generate using of this service. Let me note that this is traffic from only 200 groups, the creation of which took me at most an hour. And then, most of the time was spent collecting keys by topic. The traffic has been going on for six months now.

Conclusions and prices

I gave you the information, but how to use it is up to you. The service is not free, but extremely useful. When creating 200 groups, I spent 600 rubles on the service, which paid off in a week, given the amount of traffic that I get from them.
Now price policy service has changed a little, and get a price of 3 rubles. for 1 group you can only top up your balance by 10 thousand rubles or more. Below is a screenshot of the tariff table.

Traffic generation using MoonGen + DPDK + Lua in an artist's view

Neutralizing DDoS attacks in real conditions requires preliminary testing and verification various techniques. Network equipment and software must be tested in artificial conditions close to real ones - with intense traffic flows simulating attacks. Without such experiments it is extremely difficult to obtain reliable information O specific features and the limitations of any complex instrument.

In this material we will reveal some of the traffic generation methods used in Qrator Labs.

WARNING

We strongly recommend that the reader not try to use the tools mentioned to attack real infrastructure. Organizing DoS attacks is punishable by law and can lead to severe penalties. Qrator Labs conducts all tests in an isolated laboratory environment.

Modern technical level

An exemplary challenge in our field is saturating the 10G Ethernet interface with small packets, which implies processing 14.88 Mpps (million packets per second). Here and further we consider Ethernet network packets smallest size- 64 bytes, - since our main interest is maximizing the number of transmitted packets per unit time. A simple calculation shows that we only have about 67 nanoseconds to process one such packet.

Just for comparison - this time is close to what is required modern processor to get a piece of data from memory in case of a cache miss. Things get even more complicated when we start working with 40G and 100G Ethernet interfaces and try to fully saturate them down to the line rate (the maximum possible declared performance of the network device).

Since data typically flows through an application in userspace, through the kernel, and finally into the network interface controller (NIC), the first and most straightforward idea is to try to configure packet generation directly in the kernel. An example of such a solution is the pktgen kernel module. This method can significantly improve performance, but is not flexible enough, since the slightest change in the source code in the kernel leads to a long build cycle, reloading kernel modules or even the entire system and, in fact, testing, which reduces overall productivity (that is, it requires more time from the programmer and effort).

Another possible approach is to obtain direct access from userspace to the memory buffers of the network controller. This path is more difficult, but worth the effort to achieve more high performance. Disadvantages include high complexity and low flexibility. Examples of this approach are netmap, PF_RING and DPDK technologies.

Another effective, although very costly, way to achieve high productivity is to use specialized rather than universal equipment. Example: Ixia.

There are also solutions based on DPDK using scripts, which increases flexibility in managing generator parameters, and also allows you to vary the type of generated packets during the startup process. Below we will describe own experience with one such tool - MoonGen.

MoonGen Architecture

Distinctive features of MoonGen are:
  1. Processing DPDK data in userspace is the main reason for the performance gain;
  2. Lua stack with simple scripts on upper level and bindings to the DPDK library, written in C, in lower;
  3. Thanks to JIT (just in time) technology, Lua scripts work quite quickly, which somewhat contradicts generally accepted ideas about the efficiency of scripting languages.
MoonGen can be thought of as a Lua wrapper around the DPDK library. At least following operations DPDK visible at level user interface Lua:
  • Configuration network controllers;
  • Allocation and direct access to memory pools and buffers, which, for optimization purposes, should be allocated in contiguous aligned areas;
  • Direct access to RSS queues of network controllers;
  • API for managing computational threads, taking into account heterogeneity of memory access (NUMA and CPU affinity).

MoonGen architecture, material diagram.

MoonGen

MoonGen is a scriptable, high-speed packet generator based on the DPDK library. Lua scripts control the entire process: a user-created script handles the creation, modification, and dispatch of packages. Thanks to very fast LuaJIT and the DPDK packet processing library, this architecture allows you to saturate a 10-Gigabit Ethernet interface with 64-byte packets using only one core central processor. MoonGen allows you to achieve this speed even when a Lua script modifies each package. This does not use tricks like reusing the same network controller buffer.

MoonGen can also accept packets, that is, check which packets were dropped by the system under test. Since packet reception is controlled exclusively by a custom Lua script, it can also be used to create more complex test scripts. For example, it is possible to use two MoonGen instances to establish a connection with each other. This configuration can be used, in particular, for testing so-called middleboxes (equipment between the point of sending and receiving traffic), for example firewalls. MoonGen focuses on four main areas:

  • High performance and multi-core scaling: more than 20 million packets per second on one CPU core;
  • Flexibility: Each package is generated in real time based on a user-created Lua script;
  • Accurate time stamps: on conventional (commodity) hardware, time marking is done with millisecond accuracy;
  • Precise control of the intervals between sent packets: reliable generation of the required patterns and types of traffic on regular hardware.

DPDK

DPDK stands for Data Plane Development Kit and consists of libraries whose main functions are to increase generation performance network packets on a wide variety of CPU architectures.

In a world where computer networks become the foundation of human communication, performance, throughput and latency are becoming increasingly critical parameters for the operation of systems such as wireless network and cable infrastructure, including all their individual components: routers, load balancers, firewalls; as well as areas of application: media transmission (streaming), VoIP, etc.

DPDK is lightweight and convenient way building tests and scripts. Data transfer within userspace is something we don't see very often, mainly because most applications communicate with network equipment through operating system and the kernel stack, which is the opposite of the DPDK model.

Lua

The main purpose of Lua is to provide simple and flexible expressive tools that are extensible to specific current tasks, instead of a set of primitives applicable only to one programming paradigm. As a result, basic language very lightweight - the entire interpreter takes up only 180 kB in compiled form and is easily adaptable to a wide range of possible implementations.

Lua is a dynamic language. It is so compact that it can be placed on almost any device. Lua supports a small set of types: booleans, numbers (floating point) double precision) and strings. Common data structures such as arrays, sets, and lists can be represented by Lua's only built-in data structure, the table, which is a heterogeneous associative array.

Lua uses JIT (just in time) compilation, so being script language, shows performance comparable to compiled languages ​​such as C.

Why MoonGen

As a company specializing in neutralizing DDoS attacks, Qrator Labs needs in a reliable way create, upgrade and test own solutions on safety. It is for the latter - testing that we need various ways traffic generation simulating real attacks. However, it is not so easy to simulate a dangerous, yet straightforward, flood attack at layers 2-3 of the OSI model, primarily due to the difficulties in achieving high performance in packet generation.

In other words, for a company engaged in continuous availability and DDoS mitigation, simulating various DoS attacks in an isolated laboratory environment is a way to understand how the various equipment included in the company's hardware systems will behave in reality.

MoonGen is good way generate traffic values ​​close to the limit for the network controller using a minimum of central processor cores. Transferring data within userspace significantly increases the performance of the stack in question (MoonGen + DPDK), compared to many other generation options high values traffic. Using pure DPDK requires significantly more effort, so we should not be surprised at our desire to optimize performance. We also maintain a clone of the original MoonGen repository in order to expand functionality and implement our own tests.

In order to achieve maximum flexibility, the packet generation logic is specified by the user using a Lua script, which is one of the main features of MoonGen. For relatively simple packet processing, this solution is fast enough to saturate a 10G interface on a single CPU core. A typical way to modify incoming packages and create new ones is to work with packages of the same type, in which only some of the fields are changed.

An example is the l3-tcp-syn-ack-flood test described below. Note that any modification of the packet can be made in the same buffer where the packet generated or received at the previous stage ended up. Indeed, this kind of packet transformations are performed very quickly, since they do not involve expensive operations, such as system calls, access to potentially uncached memory areas and the like.

Tests on Qrator Labs equipment

Qrator Labs conducts all tests in the laboratory on various equipment. IN in this case We used the following network interface controllers:
  • Intel 82599ES 10G
  • Mellanox ConnectX-4 40G
  • Mellanox ConnectX-5 100G
We note separately that when working with network controllers operating on standards above 10G, the performance problem becomes more acute. Today it is not possible to saturate the 40G interface with one core, although this is already possible with a small number of cores.

In the case of network controllers manufactured by Mellanox, it is possible to change some parameters and settings of the device using the tuning guide provided by the manufacturer. This allows you to improve performance, and in some special cases, to further change the behavior of the NIC. Other manufacturers may have similar documents for their own high-performance devices intended for professional use. Even if you cannot find such a document in open access, it always makes sense to contact the manufacturer directly. In our case, Mellanox representatives were very kind and, in addition to providing documentation, quickly answered any questions we had, thanks to which we were able to achieve 100% strip recycling, which was very important to us.

TCP SYN flood test

L3-tcp-syn-ack-flood is an example of simulating a SYN flood attack. This is an extended Qrator Labs version of the l3-tcp-syn-flood test from the main MoonGen repository, which is stored in our repository clone.

Our test can run three types of processes:

  1. Generate a stream of TCP SYN packets from scratch, varying the required fields, such as source IP address, source port number, etc.;
  2. Create a valid ACK response for each received SYN packet according to the TCP protocol;
  3. Create a valid SYN-ACK response for each received ACK packet according to the TCP protocol.
For example, the internal (and therefore the hottest) loop of code for generating ACK responses looks like this:

Local tx = 0 local rx = rxQ:recv(rxBufs) for i = 1, rx do local buf = rxBufs[i] local pkt = buf:getTcpPacket(ipv4) if pkt.ip4:getProtocol() == ip4.PROTO_TCP and pkt.tcp:getSyn() and (pkt.tcp:getAck() or synack) then local seq = pkt.tcp:getSeqNumber() local ack = pkt.tcp:getAckNumber() pkt.tcp:unsetSyn() pkt.tcp :setAckNumber(seq+1) pkt.tcp:setSeqNumber(ack) local tmp = pkt.ip4.src:get() pkt.ip4.src:set(pkt.ip4.dst:get()) pkt.ip4.dst :set(tmp) ... -- some more manipulations with packet fields tx = tx + 1 txBufs = buf end end if tx > 0 then txBufs:resize(tx) txBufs:offloadTcpChecksums(ipv4) -- offload checksums to NIC txQ:send (txBufs)end
The general idea behind creating a response packet is as follows. First, you need to remove the packet from the RX queue, then check if the packet type matches the expected one. If there is a match, prepare a response by modifying some fields of the original packet. Finally, put the generated packet into the TX queue using the same buffer. To improve performance, instead of taking and modifying packets one by one, we aggregate them by retrieving all of them from the RX queue available packages, create the appropriate responses and put them all in the TX queue. Despite the fairly large number of manipulations per package, performance remains high, primarily due to the fact that Lua JIT compiles all these operations into a small number of processor instructions. Many other tests, not just TCP SYN/ACK, work on the same principle.

The table below shows the results of the SYN flood test (generating a SYN without attempting a response) using Mellanox ConnectX-4. This NIC has two 40G ports with a theoretical performance ceiling of 59.52 Mpps on one port and 2 * 50 Mpps on two ports. The specific implementation of the NIC to PCIe connection is somewhat limiting throughput(giving 2 * 50 instead of the expected 2 * 59.52).

SYN flood test; NIC: Mellanox Technologies MT27800 Family (ConnectX-5), single 100G port; CPU: Intel® Xeon® Silver 4114 CPU @ 2.20GHz

Note that in all cases we achieve more than 96% of the theoretical performance ceiling on small quantity processor cores.

Capture incoming traffic and save to PCAP files

Another example of a test is rx-to-pcap, which attempts to capture all incoming traffic and save it into a certain number of PCAP files. While this test is not specifically about packet generation per se, it does serve to demonstrate that the weakest link in userspace communication is the file system. Even the tmpfs virtual file system slows down the flow significantly. In this case, 8 CPU cores are needed to utilize 14.88 Mpps, while only one core is enough to receive (and dump or redirect) the same amount of traffic.

The following table shows the amount of traffic (in Mpps) that was received and stored in the PCAP files located in file system ext2 on an SSD (second column) or on a tmpfs file system (third column).

cores on SSD, Mpps on tmpfs, Mpps
1 1.48 1.62
2 4 4.6
3 6.94 8.1
4 9.75 11.65
5 12.1 13.8
6 13.38 14.47
7 14.4 14.86
8 14.88 14.88

Rx-to-pcap test; NIC: Intel 82599ES 10-Gigabit; CPU: Intel® Xeon® CPU E5-2683 v4 @ 2.10GHz

MoonGen modification: tman task manager

We would also like to present to the reader our own extension of the MoonGen functionality, which provides another way to run a group of tasks for testing. The main idea here is to separate the general configuration and task-specific settings, allowing you to run an arbitrary number of various tasks(i.e. Lua scripts) at the same time. Our clone of the MoonGen repository presents an implementation of MoonGen with a task manager [

Every Webmaster has a dream - to create a “miracle button”, by clicking on which visitors will immediately run to his site. Of course, any sober person will say that this does not happen. That, they say, you need to spend a long time creating a semantic core, promoting the site in search engines, communicating on forums, blogs, creating your own newsletter, spending money on advertising and doing other well-known things. And he will be right in some ways, but in this article I want to prove the opposite, and even though the “cherished button” is a slightly idealized representation of my idea, nevertheless, I have never seen anything like it, and in this article I want to talk about my method traffic extraction.

I came up with this method completely by accident, when I needed to order a header for a freelance website (I hope everyone knows such services). I just wrote a task that I needed a header for my site, gave a link to my site so they could see what to work with. And that's it.

Attention! During, 50 people visited me in 10 minutes, and I didn’t pay a penny for these people. Now imagine if this task was left not for 10 minutes (I quickly found the executor and closed the task), but for a day. Can you imagine how many will come? What if this is automated? In particular, you can easily add a task with one click by writing some script. And don’t forget that there are a lot of visited freelancing services.

In general, you can ensure huge attendance. Of course, you will now say that they will come a couple of times, and then they will already know this site and no one will set their sights on it, moreover, the Freelance account will be banned very quickly. And you will be absolutely right! BUT... After all, no one is stopping you from creating a blank page with a redirect to your site and placing it on some free hosting, like the People. Thus, you can say: “Make a header for this site for the people.” People follow the link, the redirect is instantly triggered, and they are already visitors to your main site.

Of course, you will constantly have to register new and new domains with the people, either on ucoz, or on some other free hosting. Moreover, you will have to constantly change freelance accounts. But let's imagine for a second how this can all be automated? In the end, this type Without automation it doesn't make much sense.

Let's break it down point by point:

1) Write a script for automatic registration domain on Naroda.

2) Write a script that will connect to your free hosting(the simplest, via FTP) and load your empty page with a redirect.

3) Write a script for automatic registration on several Freelancing services.

4) Write a script for automatic adding tasks for all these Freelancing services.

All you have to do is enter the captcha in points (1) and (3). That's all! I am sure that 200 (maybe more) people can come from one service and one task per day. Now imagine that you have at least 5 such services. And imagine that you have posted at least 5 tasks. Due to automation, this will take 10 minutes. Just imagine how much traffic you will receive. As you can see, everything ingenious is simple!

But he gets up main question: "Why do you need such dirty traffic?". I haven’t found an answer to this question, and therefore I don’t use this method and don’t intend to use it (that’s why I’m talking about it). But if someone participates in any affiliate programs where they pay for displaying banners, then, probably, this method will be "good". The only problem is writing such a powerful script. But it is absolutely possible to do this (I declare as a Web programmer who knows PHP quite well).

And when you create such a script, you can move further, in particular, so that tasks are generated independently (for example, based on other people’s tasks). In addition, you can automate captcha entry (yes, imagine, this is also real). And when this is created, all that remains is to congratulate you as the first creator of the “miracle button” that everyone dreams of so much. But it’s unlikely that anyone will say “Thank you” to you.

So in this article we will talk about how to use the right key phrases can generate a lot of traffic to your site.

If you want your Internet business to develop and bring good profits, you need to create streams targeted traffic, and in as many quantities as possible.

So, The best way attracting large, stable flows of traffic is promotion in search engines, and the best way to promote a site in search results is to optimize each of the pages of your site for certain key phrases. And so short review how you can do this.

The first stage is finding the right keywords

When you write another article for your site, main mistake The thing that people do is that they write an article about the first thing that comes to their mind. If you really want to reach your audience, you need to write about the topics they are looking for answers to. Start by searching for a keyword phrase that you will use in your article. This should be a phrase that a lot of people bot. And ideally, there should also be low competition for this phrase among other sites. To search for key phrases you can use free service wordstat.yandex.ru or more professional tools such as Key Collector.

Create a title for your article

Once you have found the key phrase and decided on the topic, you can start writing the title for your article.
Make sure of two things: that the title of your article contains the key phrase and that the article itself delivers on the promise made in the title.

Some webmasters also choose to include the keyword phrase in subheadings within the article itself, enclosing them in H1, H2 or H3 tags. This, of course, can be done, but not more than once, otherwise Yandex will consider you a spammer.

High quality content

This is the next one important point. Having a good keyword phrase and an attractive title created based on it, you can quickly write the article itself. And in the process of writing itself, you should forget even about the existence of the key phrase taken as a basis. The only thing that should be in your head is the awareness that you are sticking to your topic. First of all, you write for people - remember this once and for all!

Once you've finished writing, re-read the resulting article and make sure that your specific keyword phrase appears in the article a maximum of 2 or 3 times, depending on the length of the text. If you find that as you write, a key phrase is used more times in the text, simply rephrase those sentences or use synonyms to replace them.

Add images to your article

Always add at least one picture to your article. It should be relevant to the content for people, and also contain a keyword phrase in the alt tag and in the image description. If your site is on WordPress, you will see places to enter them when you upload an image and click the “edit” button.

Another reason to add a description and alt tag is that search engines can read texts, but they cannot understand images. By adding a description and an alt tag, you let search engines know what the image is about.

Add links

By creating links in your article to other articles on your site, you create a natural structure that search engines love so much. Not only that, but you also add value to your readers by giving them Additional information on a topic that interests them. There's even nothing wrong with linking to another site that can add value to your reader.

And the last thing I want to tell you in this article. If you want people to read the content on your site, always start it with a key phrase that people are searching for.

The best keywords to use are keywords with long tails. First, they help you be more specific in your article. Secondly, using long keyword phrases in titles is best for search engine promotion and, in most cases, if it matches the user’s request, your article appears in the top ten search results.

Well, that's all I wanted to tell you in this article about correct use key phrases to generate large quantity traffic. Use these tips when writing content for your site, and your search traffic will increase.

Denis Abrosimov was with you. See you in new materials on the site.

If you liked the information in this article, leave your comment below. I will be glad to talk with you.

If you're looking for the thing that search engines hate the most, it's a high bounce rate. If your indicator is too high, search engines may punish you for this by moving you to distant positions in search results. Reduce your bounce rate, and search engines will reward you with high rankings and, as a result, growth free traffic to your website. Bounce rate […]

Hello friends! Today we will talk to you about creating a website with paid access based on finished products with resale rights. The concept of a site with paid access In a nutshell: The site publishes content on a specific narrow topic, access to which is provided on on a paid basis. To form the content basis of a resell site, you can use ready-made content with […]

When creating a subscription page, before you begin, it is very important to understand who your audience is and what the purpose of your page is. And, of course, one of the goals will be to attract subscription page free search traffic. Here are up-to-date tips on how to properly optimize your subscription page for search engines. Make your sign up page as simple as possible and people will flock to it. […]

SEO content is the basis of good search engine optimization. You will not be in the top of Yandex without content. It's logical. Content still plays a major role in SEO promotion, and it deserves detailed study, planning, correct spelling, promotion and, ultimately, entry into the top search engine. And in this article, we will look at the basics of SEO content planning. 5 questions you need to […]

Good article must be between 500 and 800 words and it must be divisible useful information- give useful tips, provide “how to” information, or answer the question posed. Here are 5 steps to help you write good article for your site. Step 1: Create a Powerful Headline The first thing you need to do is create a headline that stands out and attracts […]