1.å¼åä¸ä¸ªAPPè¦å¤ä¹
ï¼
2.åºäºandroidçappç设计ä¸å¼å(åºäºandroidçappç设计ä¸å¼åç¨ä»ä¹è¯è¨å)
3.MediaCrawler 小红书爬虫源码分析
å¼åä¸ä¸ªAPPè¦å¤ä¹ ï¼
å¼åä¸ä¸ªAPPè¦å¤ä¹å¦ä»ï¼ä¸å°ä¼ä¸é½æ³æ¥æå±äºèªå·±ä¼ä¸æ产åçææºAPPï¼ä½å ¶ä¸æå°æ°ä¼ä¸ä¸»çé®é¢å°±æ¯ï¼å¼åä¸æ¬¾ææºAPPå°åºéè¦å¤å°é±ï¼
ç®åç¹æ¥è¯´ï¼è¦è§ææºAPPçéæ±åè´¨éèè¨ï¼ä»·ä½ä¸è¬å¨å åå°åå ä¸å·¦å³ï¼æ´é«ç«¯çä»·æ ¼æ´é«ã
ä»å¤©ï¼æ们就æ¥è¯¦ç»åæä¸ä¸è¿ä¸ªé®é¢ï¼è¯·ç»§ç»å¾ä¸çå§ãã
ä¸ãAPPå¼å款å¼å为åºå®æ¬¾åå®å¶æ¬¾ï¼ä¸¤è çä»·æ ¼åä¸ç¸å
åºå®æ¬¾ï¼æ¯æç´æ¥å¥ç¨å·²æçãç°æçAPPåºå®æ¨¡æ¿ï¼æ¥ä»·æ¯åºå®çï¼æéè¦çåè½ä¹æ¯åºå®çï¼ç¼ºç¹å°±æ¯å®¢æ·æ¿ä¸å°æºä»£ç ï¼ä¹ä¸è½æ ¹æ®ä¼ä¸éæ±è¿è¡å®å¶ï¼ç±äºæºä»£ç æ¯å°è£ çï¼å¦æä¼ä¸ä»¥åæ³è¿è¡åè½å级æç³»ç»ç»´æ¤çè¯ï¼ä¹ä¸è½å¤å®ç°ï¼åªè½éæ°å¼åä¸ä¸ªæ°ç软件ã
åºå®æ¬¾çAPPå¼åæ¶é´çï¼çº¦2~3æ¥çæ¶é´å³å¯å®æï¼è´¹ç¨å¤§çº¦å¨å åå°å ä¸ä¹é´ã
å®å¶æ¬¾ï¼å®å¶æ¬¾æ¯æAPPçåè½å ¨é¨éæ°å¼åï¼è¿ç¨æ¯è¾ç¹çï¼éè¦ç¾å·¥ãçåãAPPå¼åï¼åå°/客æ·ç«¯/ææºç«¯ï¼ãåå°ç¨åºåçå·¥ç§ååå®æï¼å¤§åçãåè½å¤æçAPPçè³éè¦æ°å人çå¢éã
ç±äºAPPçåè½å设计é½æ¯å®å¶çï¼å æ¤ä»·æ ¼ä¼é«äºãå®å¶æ¬¾çå¼åæ¶é´ä¸å¼åä»·æ ¼æ¯ææ£æ¯çï¼å¼åæ¶é´é¿ï¼å¤§çº¦å¨ä¸¤ä¸ä¸ªæçè³ä¸å®çå¨æéæè½å®æï¼èè´¹ç¨å¤§æ¦å¨å ä¸çè³åå ä¸å·¦å³ã
å æ¤ï¼æ³è¦ç¥éå¼åä¸æ¬¾ææºAPPéè¦è±è´¹å¤å°é±ï¼ä¼ä¸ä¸»é¦å å¿ é¡»æAPPç详ç»éæ±ååè½åç¥APPå¼åå ¬å¸ï¼å¼åå ¬å¸æè½æ¥åºä¸ä¸ªåççä»·æ ¼ã
äºãææºAPPå¹³å°ä¸åï¼å¶ä½ææ¬ä¹ä¸ä¸æ ·
ç°å¨å¸é¢ä¸æµè¡çææºAPPå¶ä½å¹³å°ä¸»è¦æ两ç§ä¸è¬å æ¬ä¸¤ç§ç³»ç»ï¼å®åç³»ç»ï¼Androidï¼åè¹æç³»ç»ï¼IOSï¼ã
ä¸è¬æ¥è¯´ï¼å¶ä½è¹æç³»ç»çææºAPP软件费ç¨è¦æ¯å®åå¹³å°çè´µä¸äºï¼å 为è¹æå ¬å¸å¯¹è¹æå¹³å°çå°éæ§åææºAPPå¼åè¯è¨Objective-Cçé¾åº¦ï¼é½è®©APPå¼åè å 大äºè¹æç³»ç»ææºAPPå¼åçé¾åº¦ã
ä¸ãAPPå¶ä½ææ¬å å«åä¸äººåçå·¥èµ
é常æ åµä¸ï¼å¼åä¸æ¬¾APPéè¦äº§åç»çã客æ·ç«¯å·¥ç¨å¸ãå端工ç¨å¸åUI设计å¸åä¸åï¼è¿å·²ç»æ¯å¶ä½ææºAPPåºç¨è½¯ä»¶æ¯è¾ç²¾ç®çé ç½®äºï¼æ以è¿äºåä¸äººåçå·¥èµä¹æ¯å å«å¨APPå¶ä½ææ¬å½ä¸çãè¿äºå·¥ä½äººåçæèªå èµ·æ¥å¯è½é½ä¼è¶ è¿4ã5ä¸å ã
åãAPPå¼åå ¬å¸çæå¨å°
éè¦æ³¨æçæ¯ï¼åæ ·å®åçAPPå¼åå ¬å¸ï¼å¨ä¸åçåå¸ä¹ä¼å¯¼è´APPçææ¬è´¹ç¨é«ä¸äº
åºäºandroidçappç设计ä¸å¼å(åºäºandroidçappç设计ä¸å¼åç¨ä»ä¹è¯è¨å)
å¦ä½å¼åä¸ä¸ªåºäºAndroidçæ ¡åAPP
1ãé¦å ä½ è¦æä¸ä¸ªandroidstudioå¼åç¯å¢ï¼å»ºè®®å®è£ androidstudioXçæ¬ä¸å®¹æåºé®é¢ï¼å®è£ æç¨ç½ä¸æå¾å¤ï¼é®åº¦å¨å³å¯ã
2ã使ç¨ADTä¹ç±»çå¼åç¯å¢è¿è¡app软件å¼åï¼æåºæ¬çä¹å¾ææ¡javaè¯è¨ï¼çæandroidç¯å¢åæºå¶ã
3ãæ ¡åappãå ¶å®å°±æ¯ä¸ä¸ªå°åç社交appä»¿ç §å¸é¢ç社交appå»åå°±è¡äºã
4ãä½ æ¯å®æ¹çè¿æ¯ä½ä¸ºç¬¬ä¸æ¹å¼åï¼å®æ¹çæ¥å£é½ç¥éç´æ¥å¼åå°±å¯ä»¥ã第ä¸æ¹çè¯è¦ä¸åå®æ¹åä½å¼åã
5ãè¿è¦é对ç½é¡µçå¸å±æ¥è°æ´åä½ç大å°å触æ§æé®ã
androidææºappå¼åæµç¨?
å¼åç»è¿ä»¥ä¸å 个è¿ç¨ä¹åï¼ä¼æ£å¼è¿å ¥å°å¼åé¶æ®µãæµè¯è°è¯APPåè½å¼åå®æä¹åï¼æµè¯äººåä¼å¯¹æ´é¡¹ç®è¿è¡ç³»ç»æ§æµè¯ãè¿ä¸ªç¯èä¼è°å¨èµ·é¡¹ç®ç»å ææ人ç¸å ³äººåã
å®åææºå¼åappçæ¹æ³å¦ä¸ï¼é¦å ï¼å¶ä½ä¸æ¬¾APPï¼å¿ é¡»è¦æç¸å ³çideaãéè¿é£äºideaæ¥è¿è¡APPç主è¦åè½è®¾è®¡ä»¥å大æ¦çé¢ææå设计ã大åè½æ¨¡å代ç ç¼å以å大æ¦ççé¢æ¨¡åç¼åã
(2)åå¤ä¸æ¶ç¸å ³çèµæï¼å¦è½¯ä»¶èä½æãåºç¨è¯´æãAppçé¢æªå¾åæå ççã(3)åå¸Appåºç¨å°å¸åºï¼æ ¹æ®App端å£éæ©åå¸iOSæAndroidåºç¨å¸åºã
ç®å主æµçææºAPPå两类ï¼ä¸ç±»æ¯åºäºè¹æï¼IOSï¼ç³»ç»çAPPï¼å¦ä¸ç±»æ¯åºäºå®åï¼Androidï¼ç³»ç»çAPPï¼ä¸¤ç§ä¸åç³»ç»çAPPæ使ç¨çå¼åå·¥å ·åç¼ç¨è¯è¨å®å ¨ä¸ä¸æ ·ãæä½æ¥éª¤æ¹æ³ï¼é¦å èªå·±æç¡®éæ±ï¼æ代ç ï¼çæå¼åæµç¨ã
androidå¼åappç®æ¯ä»ä¹ç«¯çå¼å(åºäºandroidçappå¼åç¨ä»ä¹è½¯ä»¶...1ãå端å¼åï¼ç±»ä¼¼äºç½é¡µå¼åï¼ä½æ¯åä¸åäºç½é¡µå¼åï¼å 为Androidæå¾å¤åççæ§ä»¶ï¼èä¸å®æ¯åºäºLinuxçä¸ç§è½¯ä»¶ç³»ç»ï¼æå±äºèªå·±çèææºï¼ä¸éè¿å°è£ çFrameworkå±ç´æ¥è°ç¨C/C++åºé´æ¥ä¸åºå±ç硬件交äºï¼æ以åè½é常强大ã
2ãç§ï¼ç¼ç¨å¼åAPPç¼ç¨å¼åæ¶åçç¥è¯ä¸»è¦å æ¬ï¼åæéæ±çåæè§åï¼éè¦ä¸ä¸ªå®æ´çéæ±ææ¡£ï¼å æ¬æµç¨å¾ãæ¶åºå¾çï¼è¿ä¸ªé常éè¦ã交äºè®¾è®¡ãUI设计ï¼å°±æ¯APP页é¢ç设计åå个页é¢é¾æ¥ç跳转æ åµã
3ãå¼åandroid软件ï¼ä½¿ç¨ç软件æ¯eclipseè¿æadroidstudioï¼æç¨çè¯è¨æ¯javaï¼åºå±ä½¿ç¨çæ¯linuxã
å®åAPPç主è¦å¼ååç以åå ¶ä¸»è¦è¿ç¨æ¯ä»ä¹?åçappå¼ååçappå°±æ¯å©ç¨ææºæ¬å°æä½ç³»ç»å¼åçææºappï¼ç®åææºç³»ç»ä¸»è¦å为å®ååè¹æiOS两ç§ï¼åæ¹é½æåèªçç¼ç¨å¼åè¯è¨åå·¥å ·ï¼åçappå¼åå°±æ¯å©ç¨å®æ¹çå¼åå·¥å ·è¿è¡åå«å¼åã
ç 究åå¼åAPPéè¦ç»è¿ä¸æ®µæ¶é´ï¼å½å½¢æåºæ¬äº§ååï¼ç¶åè¿è¡æµè¯ãæµè¯åæ ¼åï¼ä¸å®¢æ·æ²éç¡®ä¿æ²¡æé误ï¼å¼å§éªæ¶ãç±å®¢æ·è¿è¡æµè¯ï¼æåºä¿®æ¹æè§ã
æåå°±æ¯äº§åç¼ç åå²ï¼ä¹å³æ¯å°è®¾è®¡ç¨¿è½¬æ¢æçå®ç产åï¼ä¸»è¦ä¼éè¿å端ç¼ç ååå°å¼åå 个æ¥éª¤ãéè¿æµè¯ãæ¶éç¨æ·ä½éªæè§æ产å使ç¨bugçï¼è¿è¡åå¤ä¿®æ£ä¼åï¼ç´å°äº§åæ ä»»ä½é®é¢åå°±å¯åå¸ä¸çº¿äºã
ç¨æ·éæ±åæç¨æ·éæ±åææ¯æ´ä¸ªAPPå¼åæµç¨ä¸æéè¦çä¸ç¯ï¼ç¸å½äºä¼ä¸ä¸å³çè çå°ä½ï¼ä¸æ¬¾APPæåä¸å¦ä¹å°½æ°å³å®äºæ¤ãæ¤å¤çç¨æ·éæ±åææ¯åºäºç¨æ·çè¦æ±è¿è¡APPåè½ç梳çã
ä»ä¹æ¯åºäºandroidå¹³å°ç移å¨åå ¬åºç¨å®¢æ·ç«¯è®¾è®¡åå¼å1ãAndroidæ¯ä¸ç§åºäºLinuxçèªç±åå¼æ¾æºä»£ç çæä½ç³»ç»ï¼ä¸»è¦ä½¿ç¨äºç§»å¨è®¾å¤ï¼å¦æºè½ææºåå¹³æ¿çµèï¼ç±Googleå ¬å¸åå¼æ¾ææºèçé¢å¯¼åå¼åãå°æªæç»ä¸ä¸æå称ï¼ä¸å½å¤§éå°åºè¾å¤äººä½¿ç¨âå®åâæâå®è´âã
2ãå®åå¼åæ¯åææºå®¢æ·ç«¯çãæ¯å¦æ们ç»å¸¸ç¨çæ·å®ï¼ä½ å¨çµèä¸éè¿æµè§å¨ä¸çæ·å®è¿ä¸ªå«åpcç«¯ä½ å¨ä½ ææºä¸ä¸è½½çæ·å®ï¼æ¯ææºå®¢æ·ç«¯ï¼ä»å°±æ¯ç¨å®ååçï¼è¿å°±æ¯çæ´»ä¸ç»å¸¸ç¨çå®åå¼åçä¸è¥¿å¦ã
3ãAndroid客æ·ç«¯ï¼å°±æ¯è¿è¡å¨androidç³»ç»ä¸ç软件客æ·ç«¯ã
4ãå®åï¼Androidï¼æ¯ä¸ç§åºäºLinuxçèªç±åå¼æ¾æºä»£ç çæä½ç³»ç»ï¼ä¸»è¦ä½¿ç¨äºç§»å¨è®¾å¤ï¼å¦æºè½ææºåå¹³æ¿çµèï¼ç±Googleå ¬å¸åå¼æ¾ææºèçé¢å¯¼åå¼åãå°æªæç»ä¸ä¸æå称ï¼ä¸å½å¤§éå°åºè¾å¤äººä½¿ç¨âå®åâæâå®è´âã
5ãå端å¼åï¼ç±»ä¼¼äºç½é¡µå¼åï¼ä½æ¯åä¸åäºç½é¡µå¼åï¼å 为Androidæå¾å¤åççæ§ä»¶ï¼èä¸å®æ¯åºäºLinuxçä¸ç§è½¯ä»¶ç³»ç»ï¼æå±äºèªå·±çèææºï¼ä¸éè¿å°è£ çFrameworkå±ç´æ¥è°ç¨C/C++åºé´æ¥ä¸åºå±ç硬件交äºï¼æ以åè½é常强大ã
MediaCrawler 小红书爬虫源码分析
MediaCrawler,一款开源多社交平台爬虫,书安以其独特的卓开功能,近期在GitHub上广受关注。发源尽管源码已被删除,红书我有幸获取了一份,安卓jsp微博源码借此机会,源码我们来深入分析MediaCrawler在处理小红书平台时的小红代码逻辑。
爬虫开发时,书安通常需要面对登录、卓开签名算法、发源反反爬虫策略及数据抓取等关键问题。红书让我们带着这些挑战,安卓一同探索MediaCrawler是源码如何解决小红书平台相关问题的。
对于登录方式,小红08影院的源码MediaCrawler提供了三种途径:QRCode登录、手机号登录和Cookie登录。其中,QRCode登录通过`login_by_qrcode`方法实现,它利用QRCode生成机制,实现用户扫码登录。手机号登录则通过`login_by_mobile`方法,jenks 无源码管理借助短信验证码或短信接收接口,实现自动化登录。而Cookie登录则将用户提供的`web_session`信息,整合至`browser_context`中,实现通过Cookie保持登录状态。
小红书平台在浏览器端接口中采用了签名验证机制,MediaCrawler通过`_pre_headers`方法,文件强制删除源码实现了生成与验证签名参数的逻辑。深入`_pre_headers`方法的`sign`函数,我们发现其核心在于主动调用JS函数`window._webmsxyw`,获取并生成必要的签名参数,以满足平台的验证要求。
除了登录及签名策略外,MediaCrawler还采取了一系列反反爬虫措施。地图选房源码这些策略主要在`start`函数中实现,通过`self.playwright_page.evaluate`调用JS函数,来识别和对抗可能的反爬虫机制。这样,MediaCrawler不仅能够获取并保持登录状态,还能够生成必要的签名参数,进而实现对小红书数据的抓取。
在数据抓取方面,MediaCrawler通过`httpx`库发起HTTP请求,请求时携带Cookie和签名参数,直接获取API数据。获取的数据经过初步处理后,被存储至数据库中。这一过程相对直接,无需进行复杂的HTML解析。
综上所述,MediaCrawler小红书爬虫通过主动调用JS函数、整合登录信息及生成签名参数,实现了对小红书平台的高效爬取。然而,对于登录方式中的验证码验证、自动化操作等方面,还需用户手动完成或借助辅助工具。此外,通过`stealthjs`库,MediaCrawler还能有效对抗浏览器检测,增强其反反爬虫能力。