1. 反爬篇 | 手把手教你處理 JS 逆向之圖片偽裝

        共 3744字,需瀏覽 8分鐘

         ·

        2022-05-20 16:20

        大家好,我是安果!

        最近打算更新反爬系列相關(guān)的內(nèi)容,第一篇就從最簡(jiǎn)單的「 圖片偽裝 」開(kāi)始吧

        圖片偽裝是在網(wǎng)頁(yè)元素中,將文字、圖片混合在一起進(jìn)行展示,以此限制爬蟲(chóng)程序直接獲取網(wǎng)頁(yè)內(nèi)容

        目標(biāo)對(duì)象:

        aHR0cHM6Ly93d3cuZ3hyYy5jb20vam9iRGV0YWlsL2Q2NmExNjQxNzc2MjRlNzA4MzU5NWIzMjI1ZWJjMTBi

        1 - 分析

        打開(kāi)頁(yè)面,分析頁(yè)面發(fā)現(xiàn)網(wǎng)頁(yè)源碼中的電話號(hào)碼默認(rèn)是隱藏保護(hù)的

        并且要查看電話號(hào)碼,必須先通過(guò)賬號(hào)進(jìn)行登錄操作

        完成登錄后,點(diǎn)擊頁(yè)面上的查看按鈕會(huì)調(diào)用一個(gè)接口,隨后電話號(hào)碼就完全展示出來(lái)了

        https://**/getentcontacts/b2147f6a-6ec7-403e-a836-62978992841b

        PS:該 URL 地址中 b2147f6a-6ec7-403e-a836-62978992841b 在網(wǎng)頁(yè)源碼中可以獲取,與企業(yè)一一對(duì)應(yīng)

        通過(guò)下圖,我們發(fā)現(xiàn)上面接口響應(yīng)值中的「 tel 」字段可以拼接成一張圖片,該圖片中的內(nèi)容與電話號(hào)碼一致

        因此,我們只需要下載這張圖片,利用 OCR 進(jìn)行識(shí)別即可以

        2 - 實(shí)現(xiàn)

        由于該網(wǎng)站上的文字圖片背景很干凈,因此不需要額外的訓(xùn)練來(lái)提升文字識(shí)別率

        首先,我們調(diào)用接口獲取電話號(hào)碼一一對(duì)應(yīng)的 tel 字段

        import requests

        headers = {
            'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36',
            'Cookie''***'
        }

        # 獲取手機(jī)號(hào)碼對(duì)應(yīng)的tel字段id(一一對(duì)應(yīng))
        def get_tel_id():
            # b2147f6a-6ec7-403e-a836-62978992841b對(duì)應(yīng)企業(yè),也是一一對(duì)應(yīng)關(guān)系(網(wǎng)頁(yè)源碼)
            url = "https://**/getentcontacts/b2147f6a-6ec7-403e-a836-62978992841b"

            payload = {}

            resp = requests.request("GET", url, headers=headers, data=payload).json()
            tel_id = resp.get("tel")
            return tel_id

        然后,利用上面的 tel 字段組成圖片 URL 地址

        最后,就可以對(duì)圖片進(jìn)行文字識(shí)別了

        這里介紹 2 種方式:

        • 百度 OCR

        • pytesseract

        2-1  百度 OCR

        首先,安裝依賴包

        # 安裝依賴包
        pip3 install baidu-aip

        然后,創(chuàng)建一個(gè)用于文字識(shí)別的應(yīng)用,獲取應(yīng)用的 APP_ID、API_KEY、SECRET_KEY 數(shù)據(jù)

        最后,參考官方文檔調(diào)用下面的方法識(shí)別圖片,獲取手機(jī)號(hào)碼數(shù)據(jù)

        官網(wǎng)文檔:

        https://cloud.baidu.com/doc/OCR/s/wkibizyjk

        from aip import AipOcr

        def get_phone(tel_id):
            """
            百度OCR識(shí)別圖片,獲取文字內(nèi)容
            :param tel_id:
            :return:
            """

            url = f'https://www.**.com/home/Phone/{tel_id}'
            APP_ID = '262**'
            API_KEY = '1btP8uUSzfDbji**'
            SECRET_KEY = 'NGm6NgAM5ajHcksKs0**'
            client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
            result = client.basicGeneralUrl(url)
            # {'words_result': [{'words': '0771-672**'}], 'words_result_num': 1, 'log_id': 1527210***}
            print('識(shí)別到的手機(jī)號(hào)碼為:', result)

        2-2 pytesseract

        同樣,我們需要先安裝文字識(shí)別、圖片處理的依賴包

        # 安裝依賴包
        pip3 install pillow
        pip3 install pytesseract

        然后,根據(jù)圖片 URL 地址獲取圖片字節(jié)流,最后利用 pytesseract 識(shí)別圖片中文字即可

        import io
        import pytesseract
        import requests
        from PIL import Image

        if __name__ == '__main__':
            # 獲取手機(jī)號(hào)碼的URL地址
            image_url = f'https://www.**.com/home/Phone/{get_tel_id()}'

            resp = requests.get(image_url, headers=headers)

            # images.content: 獲取圖片的二進(jìn)制字節(jié)流
            # io.BytesIO(): 操作處理二進(jìn)制數(shù)據(jù)
            # Image.open(): 打開(kāi)圖片字節(jié)流,得到一個(gè)圖片對(duì)象
            images_c = Image.open(io.BytesIO(resp.content))

            # 利用pytesseract識(shí)別出圖片中的字符串,即為手機(jī)號(hào)碼
            phone = pytesseract.image_to_string(images_c)

            print(f'聯(lián)系方式: {phone}')

        以上就是應(yīng)用圖片偽裝常規(guī)的處理方式,我們只需要找出圖片的生成規(guī)則,然后利用 OCR 進(jìn)行識(shí)別成文本,最后組裝在一起即可

        如果你覺(jué)得文章還不錯(cuò),請(qǐng)大家 點(diǎn)贊、分享、留言 下,因?yàn)檫@將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!


        推薦閱讀


        用 Python 遠(yuǎn)程控制 Windows 服務(wù)器,太好用了!

        JavaScript 逆向爬蟲(chóng)中的瀏覽器調(diào)試常見(jiàn)技巧

        JavaScript 逆向爬蟲(chóng)中的瀏覽器調(diào)試常見(jiàn)技巧(下)


        END


        好文和朋友一起看~
        瀏覽 133
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 肏屄视频在线播放 | 免费的黄色A片 | 国外精品二三区 | 学生妹做爱视频 | 成人黄色在线视频 |