Many business teams often need to promote some offline activities or product advertising pages through Wechat. Because at this stage, Wechat promotion is the fastest way to disseminate information. What we see most is to paste two-dimensional codes of Wechat on posters so that everyone can see their products at once. But because Wechat officials want to maintain a green environment, they have a very strict review of this kind of promotion links. I will not say more about violations of the rules, and there is no violation of the rules of Wechat. Otherwise, they are often blocked by Tencent.
This problem has always been a headache for the general public, because the efficiency of Wechat promotion is really ideal, the number of users fission is also very fast, but when a large number of human and material resources are invested, Wechat silently sealed the domain name, resulting in all the previous promotion work is in vain.
There is an example around me. Our brother team spent a lot of time and money to develop a new product, and spent a lot of energy to do a few sets of exquisite product promotional pages. In order to vigorously promote the product, they were repeatedly blocked by Wechat domain names. Eventually, all the promotion work was suspended. No matter how well the product was written, it would be useless to fail to promote it. Work. Later, their technology went to Baidu, to major blog forums to find solutions, Emperor did not bear the burden of people, they eventually found a more reliable partner. 366TooL Later, our team used it for reference when promoting. It's really good. At least the advertising links we sent out have not been intercepted for more than a month.
So I asked the technical director to study their anti-blocking principle, and I would like to write this article to share some of our anti-blocking experience and experience.
1. Detection of Wechat Domain Name and Switching of Domain Name
First, you need to have a Wechat domain name detection interface, configure your interface request procedures, prepare two sets of domain names A and B. The domain name we share is A, but when we click on it, we jump to B. The premise is to check whether B is sealed or not. Here, we need to prepare dozens or even hundreds of B. Using domain name detection interface, we can easily realize automatic switching between sealed and blocked domains.
2. Multilevel Matrix Encryption Jump
It should be noted here that the domain name of the landing page is as long as possible, and the last. html is made dynamic as possible. This way will still use the first detection + switching interface, and this anti-blocking effect is better and the stability will be higher. Share a piece of code we cracked for your reference.
$url = "http://www.366tool.com"; $params = array( 'appkey' =>'appkey',//The APKEY you applied for 'path' =>'/home',//Routes that need to be switched (not necessarily transmitted) ); $paramstring = http_build_query($params); $content = Curl($url, $paramstring); $result = json_decode($content, true); if($result) { var_dump($result); }else { //Request exception } /** * Request interface returns content * @param string $url [Request URL address] * @param string $params [Request parameters] * @param int $ipost [Is POST used or not? * @return string */ function Curl($url, $params = false, $ispost = 0) { $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); if ($ispost) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_URL, $url); }else { if ($params) { curl_setopt($ch, CURLOPT_URL, $url.'?'.$params); } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response; }