发现钓鱼网站

我平时会刷一会儿微博,看看当前热门数据。

前天的时候在热门微博里看到了一则广告 <6月幸运召唤师抽奖> ,身为一个从s3开始入手的老玩家,没有丝毫犹豫直接从链接点了进去。
当我遇到钓鱼网站_Asyncpy
身为程序员的我,近些年也算是浏览大千网站,打开网页的第一时间就感觉有些不对。经过确认,该网站为钓鱼网站,直接向官方账号进行了反馈,也在12321进行了网站举报。
当我遇到钓鱼网站_Asyncpy_02

并没有这么简单

然而今天洽过午饭之后,打开微博发现事情并没有这么简单,该网站还是钓到了很多人

微博的超链接标签看不到详细的url,所以很多使用微博app的人更容易上当

从微博app中访问链接,打开后的界面跟真实的抽奖界面是完成一样的
当我遇到钓鱼网站_Asyncpy_03
等到你提交账号密码之后,他会跳转到真正的抽奖官网,留下一脸懵逼的你打问号。

我查看了一下,已经有很多上当的同学在微博泄愤了,辛苦打的号被封3年是真的太气了。


当我遇到钓鱼网站_Asyncpy_04
当我遇到钓鱼网站_Asyncpy_05


我深入了解了一下,这个渔夫之前的账号 <LOL6月幸运账号师> 已经被封了,但是他又申请了新的账号继续钓鱼,这可真是防不胜防,所以写一篇文章提醒下大家,谨防假冒。
当我遇到钓鱼网站_Asyncpy_06


如何察觉是钓鱼网站

我在公司电脑上浏览微博,一般使用的是网页版或者移动版。

当我遇到钓鱼网站_Asyncpy_07
钓鱼网站链接: https://lm.6iyy.cn/action/L3/?act=1

首先是该网站的异常url,一般来说英雄联盟的活动,链接前面都是 https://lol.qq.com/ 。

LoL官方抽奖的链接: https://lol.qq.com/act/a20200415lucky/index.html

而这个 lm.6iyy.cn 看起来就比较low。当遇到这个情况,最好先到官网确认下,谨防假冒。

对于使用app看不到链接的同学,碰到这种广告推送,千万不要随意点击。打开了也不要提交账号密码,先确认是否是正确有效的官方活动,如果真的脑子一热就把账号密码提交了,一定要快速更改密码,亡羊补牢未为晚也。

吃一堑长一智,要怪就怪这些无良网站开发者和某浪的神奇推送机制吧


难道就这样忍了吗

虽然年迈的我没有被骗到,但是看着那一个个被封几百天的同学,自己也是很生气啊!
当我遇到钓鱼网站_Asyncpy_08
作者并不是hacker,也不擅长通过特殊手段去攻击这个钓鱼网站,基本的举报工作做完之后,我决定想办法恶心他一下。

这种钓鱼网站主要是收集玩家的账号信息,然后挂到租赁平台或者是测试外挂脚本等等。

那我就伪造百万个账号密码提交到他的后台,给被骗的同学增加修改密码的反应时间。


使用Asyncpy提交账号

Asyncpy是我之前基于asyncio和aiohttp开发的一个轻便高效的爬虫框架,可实现并发操作。(使用文档)

先查看一下这个钓鱼网站的提交接口,参数很简单,u 和 p 是我填写的账号和密码
当我遇到钓鱼网站_Asyncpy_09
开始编写一个提交账号的爬虫程序。
安装框架: pip install asyncpy
创建项目: asyncpy genspider demo
然后打开这个项目。
当我遇到钓鱼网站_Asyncpy_10

打开demo.py

开始编写爬虫文件

# -*- coding: utf-8 -*-
from asyncpy.spider import Spider
import settings
from asyncpy.request import Request
from middlewares import middleware
import random

class DemoSpider(Spider):
    name = 'demo'
    settings_attr = settings

    start_urls = []
    url = 'https://lm.6iyy.cn/action/L3/2019.php'
    pwstr = 'abcdefghigklmnopqrstuvwxyz123456789!#.'

    async def start_requests(self):
        for i in range(100000):                 # 创建请求任务
            userport, password = '', ''
            for num in range(9):
                userport = str(random.randint(1,9))+userport       # 帐号
            l = random.randint(10,15)                             # 密码的位数
            for num in range(l):
                password = str(random.choice(self.pwstr))+password    # 密码

            data = {"u": userport,
                    "p": password
                    }
            print(data)
            yield Request(url=self.url,data=data,callback=self.parse)

    async def parse(self, response):
        pass

DemoSpider.start(middleware=middleware)

打开settings.py文件

找到 CONCURRENT_REQUESTS 参数,控制并发线程的数量。

CONCURRENT_REQUESTS = 300

修改 middleware.py文件

修改user-agent,可以添加代理IP

# -*- coding: utf-8 -*-
from asyncpy.middleware import Middleware
from asyncpy.request import Request
from asyncpy.spider import Spider

middleware = Middleware()

@middleware.request
async def UserAgentMiddleware(spider:Spider, request: Request):
    ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36"
    request.headers.update({"User-Agent": ua})
   # request.aiohttp_kwargs.update({"proxy": "http://58.218.200.228:3632"})

然后重新返回demo.py,点击运行,当前10w个账号的提交任务已经开始了!

当我遇到钓鱼网站_Asyncpy_11

还可以多创建几个demo.py文件,同時启动哈,可参考(使用文档)


控制好请求的速度,不要搞那么快,铭记初衷,毕竟我们不是恶意破坏服务器哈!