<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python網(wǎng)絡(luò)爬蟲,爬取某非法網(wǎng)貸系統(tǒng)

          共 3488字,需瀏覽 7分鐘

           ·

          2021-12-16 01:26

          今天從群里看到一個(gè)朋友的任務(wù)

          本著學(xué)習(xí)的心開始研究

          • 上任務(wù)
          • 給的文件
          • 打開這個(gè)web.exe文件
          • 只有這樣才能打開目標(biāo)網(wǎng)頁,這個(gè)好像一個(gè)爬蟲作業(yè),不是直接聯(lián)網(wǎng)的那種網(wǎng)站
          • 最后爬取的url是:http://127.0.0.1/8888
          • 我也不懂是什么原理,繼續(xù)
          • 打開網(wǎng)頁直接就是登錄,打開F12登錄一次試試,看看密碼有沒有加密
          • 密碼隨便寫的,只為了抓個(gè)包
          • 明文的密碼,他還給了個(gè)密碼本需要自己嘗試密碼是什么
          • 用上面抓到的包發(fā)送請(qǐng)求,找到真的賬號(hào)密碼
          import?requests

          url?=?'http://127.0.0.1:8888/login'
          #抓包得到的url
          headers={
          ????'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/96.0.4664.9?Safari/537.36'
          }
          #自己ua,最簡(jiǎn)單的設(shè)置?
          with?open('賬號(hào)密碼弱口令字典.txt','r',encoding='utf-8')as?f:
          #讀取密碼本
          ????for?line?in?f:
          ????????a?=?line.strip('\n').split('?')
          #去除每行最后的換行符,賬號(hào)密碼中間和有一個(gè)空格,用空格切割得到一個(gè)列表
          #列表里兩個(gè)元素,就是賬號(hào)和密碼
          ????????username?=?a[0]
          ????????password?=?a[1]
          ????????params?=?{"username":?username,?"password":?password}
          #設(shè)置參數(shù)
          ????????r?=?requests.post(url=url,?headers=headers,?json=params).json()
          #發(fā)送請(qǐng)求
          ????????print(username,password,r)
          #打印賬號(hào)密碼和返回內(nèi)容
          • 得到的結(jié)果顯示indigo是賬號(hào),playhouse是密碼,登錄進(jìn)去
          • 里面兩個(gè)列表就是要爬取的內(nèi)容,發(fā)現(xiàn)url后面帶了個(gè)后綴
          • 跟抓到的包正好對(duì)上了,開始寫代碼
          import?requests
          #導(dǎo)入包?
          url?=?'http://127.0.0.1:8888/login'
          #登錄的url,為了保存cookies
          headers={
          ????'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/96.0.4664.9?Safari/537.36'
          }
          #ua設(shè)置?
          params={"username":"indigo","password":"playhouse"}
          #賬號(hào)密碼參數(shù)?
          session?=?requests.session()
          #requests里的一個(gè)函數(shù)吧?不知道叫什么
          #可以保存cookies,方便后面訪問
          r?=?session.post(url=url,headers=headers,json=params).json()
          #獲取cookies
          agent_url?=?'http://127.0.0.1:8888/admin/agent-list'
          #放貸人員的url?
          res?=?session.get(url=agent_url,headers=headers)
          datas?=?res.json()['data']
          print(datas)
          • 返回的結(jié)果如下圖
          • 前不久剛看了一個(gè)js逆向的文章,亂七八糟帶=,是base64加密
          • 但是等號(hào)是在結(jié)尾,這個(gè)等號(hào)在開頭
          • 大膽猜測(cè)這個(gè)是base64加密并且把順序顛倒了一下
          data?=datas[::-1]
          #?重新排序,輸出結(jié)果就是a?=?'1234'
          #?b?=?a[::-1]
          #?print(b)
          #?輸出'4321'
          • 得到了等號(hào)在屁股的亂七八糟的東西,繼續(xù)用base64解密
          import?base64
          a=base64.b64decode(data.encode('utf-8'))
          • 好像真的蒙對(duì)了,返回了有點(diǎn)接近的內(nèi)容
          • 看第一行我選中的地方有個(gè)name,后面不遠(yuǎn)有個(gè)phone,大概在中間位置
          • 而且好像還有電話號(hào)碼似的數(shù)字
          • 感覺要?jiǎng)倮?,可是發(fā)現(xiàn)其他那些%22啊什么的不認(rèn)識(shí),問了問群里大佬
          • 說是url編碼,找了半天解碼方式,倒是也簡(jiǎn)單
          from?urllib.parse?import?unquote
          b?=?unquote(a.decode())
          • 這一步結(jié)束后打印了一下結(jié)果,讓人開心
          • 這樣后面就是轉(zhuǎn)一下json,然后再從里面取值了,最后寫入csv
          • 后面的步驟過于基礎(chǔ),這里不細(xì)說了
          • 這樣就獲得了貸款人員的內(nèi)容
          • 放款記錄跟著個(gè)是一樣的
          • 個(gè)人感覺大部分一個(gè)網(wǎng)站的同一種內(nèi)容不會(huì)寫兩種方法
          • 下面是完整代碼
          import?requests
          import?base64
          from?urllib.parse?import?unquote
          import?csv
          import?json
          ?
          url?=?'http://127.0.0.1:8888/login'
          headers={
          ????'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/96.0.4664.9?Safari/537.36'
          }?
          params={"username":"indigo","password":"playhouse"}?
          session?=?requests.session()
          r?=?session.post(url=url,headers=headers,json=params).json()
          #獲取cookies
          agent_url?=?'http://127.0.0.1:8888/admin/agent-list'
          #放貸人員的url
          loans_url?=?'http://127.0.0.1:8888/admin/loans-list'
          #放貸記錄的url
          res?=?session.get(url=agent_url,headers=headers)
          datas?=?res.json()['data']
          #請(qǐng)求回的內(nèi)容是一串倒敘的base64加密?
          data?=datas[::-1]
          #?重新排序?
          a=base64.b64decode(data.encode('utf-8'))?
          #解密
          b?=?unquote(a.decode())?
          #解密后得到的內(nèi)容是16進(jìn)制的再次轉(zhuǎn)換
          c?=?json.loads(b)
          #?轉(zhuǎn)成json格式
          head?=?('name','no','phone')
          #?設(shè)置csv文件頭
          with?open('放貸人員.csv','a',encoding='utf-8',newline='')as?f:
          ????writer?=?csv.DictWriter(f,fieldnames=head)
          ????writer.writeheader()
          ????for?i?in?c:
          ????????writer.writerow(i)?
          res?=?session.get(url=loans_url,headers=headers)
          datas?=?res.json()['data']?
          data?=datas[::-1]?
          a=base64.b64decode(data.encode('utf-8'))
          b?=?unquote(a.decode())
          c?=?json.loads(b)?
          head?=?('money','no')
          with?open('放貸記錄.csv','a',encoding='utf-8',newline='')as?f:
          ????writer?=?csv.DictWriter(f,fieldnames=head)
          ????writer.writeheader()
          ????for?i?in?c:
          ????????writer.writerow(i)

          ?


          最后,推薦螞蟻老師的Python零基礎(chǔ)到爬蟲到數(shù)據(jù)分析實(shí)戰(zhàn)課



          瀏覽 118
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美逼毛 | 亚洲成人免费黄色视频 | 成人黄色免费视频 | 操逼操逼操逼操逼操逼操逼操逼操 | 青娱乐人人草 |