前言:圖靈第三題就是對用戶瀏覽器調試檢測,檢測鼠標右擊打開控制臺,檢測鍵盤按鍵ctrl+shift+i,從瀏覽器設置打開開發者工具也不行,應該是有瀏覽器寬高檢測的,所以我們保證瀏覽器頁面寬高不變即可。
- 你如果想右擊打開控制臺,就會:
- 你如果ctrl+shift+i或者從瀏覽器設置打開,那么就會:
- 解決方案:彈出控制臺,使得控制臺和該頁面不在同一個頁面上。
這樣就能抓包了,此題也就輕松解決了,當然你也可以用抓包工具抓包,比如fd。
代碼如下:
import asyncio, aiohttpclass AsyncSpider(object):def __init__(self):self.url = 'https://www.mashangpa.com/api/problem-detail/3/data/'self.headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36'}self.cookies = {'sessionid':'5jcme0ghsrunwzrdonvwiwpm87nquvxx'}self.semaphore = asyncio.Semaphore(3)async def fetch_page(self, session, page):params = {'page': page}async with self.semaphore:async with session.get(self.url, headers = self.headers, cookies = self.cookies, params = params, timeout = 10) as res:data = await res.json()return data.get('current_array', [])async def parse_all_pages(self):total_sum = 0async with aiohttp.ClientSession() as session:tasks = [self.fetch_page(session, page) for page in range(1, 21)]results = await asyncio.gather(*tasks)for array in results:if array:total_sum += sum(array)print(total_sum)if __name__ == '__main__':spider = AsyncSpider()asyncio.run(spider.parse_all_pages())