需要登录的网站怎么爬虫
登录页面背后通常藏着两样东西:一个是需登表单提交后的会话凭证,另一个是网站前端 JavaScript 动态生成的加密参数。直接拿 requests 去 POST 用户名密码,爬虫大概率会收到 403 或者一个空页面。需登原因很简单——服务器不认你。网站
我去年帮朋友抓一个论坛的爬虫帖子数据,那个站用的需登是 Discuz,登录接口除了账号密码,网站还带了一个 formhash 字段。爬虫这个值藏在登录页的需登 HTML 里,每次刷新都会变。网站你用固定值去提交,爬虫服务器直接拒绝。需登解决办法就是网站先 GET 登录页,用正则或者 lxml 把 formhash 抠出来,爬虫再带着它去 POST。这是最基础的一层。
更麻烦的是那些把登录逻辑放在 JavaScript 里的站。比如某电商平台的商家后台,密码不是明文传输,前端用 RSA 加密,公钥还是动态下发的。你打开 Chrome DevTools,在 Network 面板里找到登录请求,看 Payload 那一栏,密码字段是一长串十六进制。这时候光靠 requests 不够了,得用 Selenium 或者 Playwright 驱动真实浏览器。让浏览器自己去执行 JS,你只管填输入框、点按钮。
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com/login") driver.find_element(By.ID, "username").send_keys("your_user") driver.find_element(By.ID, "password").send_keys("your_pass") driver.find_element(By.ID, "submit").click() # 之后 driver.get_cookies() 拿到会话 用 Selenium 的好处是省心,坏处是慢。每个请求都要等页面渲染,跑几千个页面的时候,时间成本很高。折中方案是先用 Selenium 登录一次,把 cookies 导出来,再交给 requests.Session 去批量抓取。这样既绕过了 JS 加密,又保留了 requests 的速度。
还有一种情况是 token 放在请求头里,比如 Authorization: Bearer xxxxx。这个 token 可能是登录后接口返回的,也可能存在 localStorage 里。你可以在 Selenium 里执行 driver.execute_script("return localStorage.getItem('token')") 把它取出来。拿到之后,后续请求直接加这个头就行,连 cookies 都不用管。
验证码是另一个坎。简单的图形验证码可以用 ddddocr 或者 tesseract 识别,复杂一点的滑块、点选,要么接打码平台,要么用深度学习模型自己训练。我试过用 OpenCV 做滑块缺口识别,准确率大概八成,剩下的两成交给重试机制。点选验证码比较恶心,通常得靠第三方服务,比如超级鹰,一分钱一次,量大也不便宜。
有些站会检测 Selenium。比如 navigator.webdriver 这个属性,正常浏览器是 false,Selenium 驱动的是 true。对策是加 --disable-blink-features=AutomationControlled 启动参数,再用 CDP 把 navigator.webdriver 改成 false。还有的站会检查 window.chrome 对象是否存在,那就用 undetected-chromedriver 这个库,它专门做反检测,省得自己一个个补。
最后说一个容易被忽略的点:登录后的会话是有有效期的。你抓了半小时,突然全部返回登录页,说明 session 过期了。这时候要么重新登录,要么在代码里加一个检测逻辑——发现响应里包含登录页特征字符串,就自动触发重新登录流程。我一般会在 Session 类里写一个 ensure_login() 方法,每次请求前检查一下,过期就重新走一遍登录。
说到底,登录爬虫的核心就一句话:让服务器相信你是一个已经登录的正常用户。至于怎么让它相信,手段从简单到复杂,取决于对面站点的防护级别。大部分中小站点,cookies 加请求头就够了。大厂的后台,那就得老老实实上浏览器自动化,甚至得养号、控频、换 IP。没有银弹。
(责任编辑:焦点)
-
拿到“国家信息安全漏洞库技术支撑单位一级”这个资质,意味着什么?说白了,就是给漏洞库干活的门槛,而且是最高那道。 我认识一位做漏洞挖掘的朋友,他们公司去年评上了这个一级支撑单位。他跟我讲,评审那天,专
...[详细]
-
晚上十点的图书馆三楼,靠窗那排桌子几乎被考证大军占领。我斜对面坐着会计系的陈默,桌上摊着《证券从业资格备考精要》,旁边还压着三本不同颜色的笔记本。他每天雷打不动来这儿刷两小时题,周末还要去市区某机构上
...[详细]
-
专色和透明度叠在一起,是印刷文件里最让人头疼的组合之一。AI工具在这件事上的表现,有点像聪明但急躁的实习生——能快速给出方案,却常常忽略油墨叠印的物理规则。 拿我最近处理的一个包装盒来说。客户要一种品
...[详细]
-
凌晨两点十七分,我盯着浏览器里那个404页面,咖啡杯沿积了一圈褐渍。这是第三次尝试绕过公司防火墙的验证码接口——不是攻击,只是忘了密码重置链接过期了。网站管理员登录页,这个被大多数用户忽略的入口,其实
...[详细]
-
扬州大学的招标采购信息,说白了就是学校要花钱买东西、建工程、买服务,然后公开向社会喊话:谁家东西好、价格实在,就来投标。这事儿看着是行政流程,其实跟每个师生的日常都沾边——实验室那台新显微镜,宿舍楼翻
...[详细]
-
按一下F12,随便找个新闻网站,把头条标题改成“我中了五百万”,截图发给朋友。三分钟后他回复:“P得挺像啊。”你告诉他没P,就是浏览器里改了一行字。他大概率不信,但你确实只改了一行字。 浏览器开发者工
...[详细]
-
凌晨三点,我蹲在服务器机房里,看着那台老旧的思科路由器指示灯规律地闪烁。机柜嗡嗡作响,冷却风扇吹出的风带着金属和灰尘混合的气味。我手里攥着一根网线,另一端插在交换机上,旁边是公司财务部的核心交换机端口
...[详细]
-
法治日报官方网站的首页,每天凌晨五点准时更新。这个时间点是我观察很久才发现的——头天晚上的社会新闻热点,经过编辑部的连夜梳理,会在清晨以“法治进行时”栏目的形式呈现。页面设计谈不上惊艳,甚至有些朴素,
...[详细]
-
凌晨两点,我盯着屏幕上的IP归属地——显示在冰岛雷克雅未克。可窗外明明是上海梅雨季的闷热,楼下便利店关东煮的热气正糊着玻璃。这大概就是现代人的魔法:肉身困在三十八度的出租屋,数字化身却能在北欧吹冷风。
...[详细]
-
昨天下午,我朋友老周的公司官网被劫持了。用户访问他的企业站,页面跳到一个澳门赌场。他急得满头大汗,打电话问我怎么办。我远程一看,好家伙,服务器上的index.php被改得面目全非,还多了个叫“syst
...[详细]

js跳转网址
1024tb最新地止
mg平台游戏娱乐
风险漏洞排查情况报告
高校网站建设