本期主要是介绍一下利用vps拨号的方法去运行用户点击行为,俗称seo模拟快排,那么顾名思义,快排的运行方式需要在一台拨号服务器上进行,本次模拟快排的代码是采用python中的pyppeteer库,这个库运行自动化浏览器,比较顺畅且快速。

运行逻辑

每次运行一次点击后,自动重新拨号一次,然后再重新打开浏览器进行下一个关键词的运行点击,关键词使用数据库轮询方式,每次点击一个关键词后,自动切换下一个关键词

async def connect(self, name, username, password):    '''ADSL拨号连接'''    cmd_str = "rasdial %s %s %s" % (name, username, password)    os.system(cmd_str)    await asyncio.sleep(random.choice(range(1,4)))    print("ADSL拨号成功")async def disconnect(self, name):    '''ADSL断开连接'''    cmd_str = "rasdial %s /disconnect" % name    os.system(cmd_str)    await asyncio.sleep(random.choice(range(1,4)))    print("ADSL拨号断开")    async def getKeyword(self):    try:        while True:            sql = 'select keywords,mode,web_name,web_url,click_now_count,click_ready_count from seo_kuaipai limit %s,%s' % (                (self.pn - 1), 1)            self.cur.execute(sql)            info = self.cur.fetchone()            self.keyword = info[0]            self.mode = info[1]            self.web_name = info[2]            self.web_url = info[3]            self.click_now_count = int(info[4] if info[4] else 0)            self.click_ready_count = int(info[5] if info[5] else 10)            if self.click_now_count > self.click_ready_count:                self.pn += 1            else:                logger.info(f'正在优化的关键词是{self.keyword}')                break            except TypeError:                logger.error('关键词已经全部点完')                return True

在某度输入关键词后以及点击轨迹也做了一定的处理,其目的是为了规避机器点击,真实的模拟真人点击。

python模拟点击pc_python模拟点击pc

点击元素上,做了随机选取元素的坐标位置,然后进行鼠标的移动点击。

async def btn_element_position(self):    element = await self.page.evaluate('''                                       () =>{                                        return {                                           x: document.querySelector('#su').getBoundingClientRect().x,                                         y: document.querySelector('#su').getBoundingClientRect().y,                                         width: document.querySelector('#su').getBoundingClientRect().width,                                         height: document.querySelector('#su').getBoundingClientRect().height                                         }}                                        ''')    x = element['x'] + random.choice(range(1, int(element['width']) + 1))    y = element['y'] + random.choice(range(1, int(element['height']) + 1))    await self.mousemove_click(x,y)

消除浏览器指纹特征

代码里通过对浏览器的header头进行了处理,包括(随机UA,随机cookie、随机分辨率)、以及浏览器的启动特征webdriver进行屏蔽,屏蔽webdriver用到了pyppeteer-stealth库,这个库是puppeteer-extra-plugin-stealth的Python移植版,可以有效的防止机器人检测

await stealth(self.page)  #消除浏览器特征    await self.page.authenticate({'username': '649307714', 'password': 'a2063ror'})     #设置浏览器uaawait self.page.setUserAgent(await self.rand_ua())     #设置浏览器大小await self.page.setViewport({'width':self.rand_fbl["width"]-16,'height':self.rand_fbl["height"]-60})  #设置浏览器cookieasync def add_Cookies(self): with open('common/cookies.txt','r',encoding='utf-8') as f:     cookies_list = f.read().splitlines()     # 50%实用百度cookies     rand_cookies = random.choice(cookies_list).split('=')     if random.choice(range(0, 2)) == 0:         logger.info(f'本次使用cookies为{rand_cookies}')         await self.page.setCookie({'name':rand_cookies[0],'value':rand_cookies[1],'domain':'www.baidu.com'})     else:         logger.info('本次不使用cookies')

清除缓存文件

清除缓存文件,可以每次运行浏览器模拟的时候,可以将本地缓存给清理掉,让每次启动浏览器的时候都是无缓存的状态,而且也会释放本地内存,不会造成卡顿。

python模拟点击pc_百度_02

这就是用python实现模拟快排整体思路了,当然还有更多的优化措施可以进一步的优化,现在可以在vps服务器里顺畅的运行了。此次我也将代码进行封装了。大家在购买这款模拟快排软件不需要安装python环境,就可以运行了。

python模拟点击pc_python模拟点击pc_03