聊聊爬虫

我意纵横 2014-12-09 10:22:37
加精
我个人对爬虫技术挺喜欢的, 也算不上精通, 就是喜欢爬这爬那的.

比如说糗百, 比如说CSDN什么的, 一般比较喜欢伪装浏览器登录这些应用, 然后发纸条, 发帖子, 回复什么的.

当然, 前段时间更是完成了12306的抢票程序, 也是么么嗒.

好了, 说说我的困惑吧, 拿糗百来说(不是广告), 这个里面的规则是我最搞不懂的, 我发10个帖子, 能有5个成功, 5个失败, 它是个什么规则 ? 我的评论内容其实每次是不一样的, 中间都有很多随机字符.
...全文
8694 138 打赏 收藏 转发到动态 举报
写回复
用AI写文章
138 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38087114 2019-01-09
  • 打赏
  • 举报
回复
其实一般来说服务器端会从两个时刻对用户做校验: 1. 瞬时校验,你的请求一提交,服务器就会校验,一般是校验敏感字符,看下你发帖的频率,建立一套安全规则来防一些爬虫或者自动脚本 2. 数据挖掘,这个是异步的,比如每天凌晨,把当日提交的一些数据拿出来和历史数据做一个安全规则的过滤,用这种方式来判断你的账号是否是被爬虫或者脚本控制,如果是的话就采取一些措施,比如你再次提交的时候在瞬时校验里给你弹个验证码,有些游戏厂商会封号(反外挂)。这里的安全规则就是最核心的东西,这个就比较复杂了[/quote]
luokezong7741 2017-02-17
  • 打赏
  • 举报
回复
以前只看了开头 最近终于完整的读了一遍 收藏了 好贴
xiao昭 2017-02-08
  • 打赏
  • 举报
回复
看了半小时!饭都忘记吃了。。。。。
Avei.sherity 2016-10-06
  • 打赏
  • 举报
回复
长啊,看完了
hero_tan 2016-10-04
  • 打赏
  • 举报
回复
爬虫不是一般都用python写的吗
iamjsber 2016-09-30
  • 打赏
  • 举报
回复
好长啊 看不下去
Iversonbi 2014-12-30
  • 打赏
  • 举报
回复
引用 138 楼 javaloverkehui 的回复:
[quote=引用 137 楼 Iversonbi 的回复:] [quote=引用 134 楼 javaloverkehui 的回复:] [quote=引用 133 楼 Iversonbi 的回复:] 我想请教楼主下,我最近需要做一个简单网站统计,我在filter中拦截所有的请求,获取到来源地址。若是通过爬虫请求过来的url这种情况下能否获取header信息,若是能获取到的header信息,劳驾问下这信息又是什么?谢谢楼主了
request.getHeader 这是可以获取到头信息的, 头信息是什么这我可能无法回答全, 但头信息里, 对你有用的, 一个是referer, 一个是User-Agent, 还有一个Accept, 第一个referer可以理解为来源, 用这个判断其实是可以的, 但最好不要这样判断, 因为容易误杀. Accept我也没见人用这个判断过. 有一种可行的, 就是判断user-agent, 如果user-agent为空, 可以确定是爬虫. 当然, 现在好多爬虫也是自带user-agent,完全模拟浏览器, 这时候你要在拦截器里判断它的行为. 之前有讲过的. 现在回答你的问题. 其实用技术模拟的爬虫, 和真实浏览器没区别的. 所以你说的这个问题, 应该问如何获取一个请求的来源. request.getHeader("Referer") 这个就是了, 我应该没记错.[/quote] 非常感谢楼主的回答,我刚才做了模拟请求的测试,直接发送请求,获取到header信息是null,然后在浏览器中访问自己网站时也获取到的header也为null。很感谢楼主的回答,谢谢了! [/quote] 别逗我... 模拟请求, header是null, 浏览器请求, 也是null.....砸我招牌呢, 怎么回事的 ?[/quote]没有没有,我下载了一个模拟请求的工具,然后向我本地服务器发送的请求,或是在浏览器中直接访问我本地的服务器,我在服务端 getHeader 的时候打印出来的 url的确是空,若是把我自己的网站链接放在别的网站上,链接过来的话,访问的时候,我在服务端getHeader 是有值的,这个值是放我连接的网站地址。不知道楼主的意思是……若是回答有误,还望楼主指教
我意纵横 2014-12-30
  • 打赏
  • 举报
回复
引用 137 楼 Iversonbi 的回复:
[quote=引用 134 楼 javaloverkehui 的回复:] [quote=引用 133 楼 Iversonbi 的回复:] 我想请教楼主下,我最近需要做一个简单网站统计,我在filter中拦截所有的请求,获取到来源地址。若是通过爬虫请求过来的url这种情况下能否获取header信息,若是能获取到的header信息,劳驾问下这信息又是什么?谢谢楼主了
request.getHeader 这是可以获取到头信息的, 头信息是什么这我可能无法回答全, 但头信息里, 对你有用的, 一个是referer, 一个是User-Agent, 还有一个Accept, 第一个referer可以理解为来源, 用这个判断其实是可以的, 但最好不要这样判断, 因为容易误杀. Accept我也没见人用这个判断过. 有一种可行的, 就是判断user-agent, 如果user-agent为空, 可以确定是爬虫. 当然, 现在好多爬虫也是自带user-agent,完全模拟浏览器, 这时候你要在拦截器里判断它的行为. 之前有讲过的. 现在回答你的问题. 其实用技术模拟的爬虫, 和真实浏览器没区别的. 所以你说的这个问题, 应该问如何获取一个请求的来源. request.getHeader("Referer") 这个就是了, 我应该没记错.[/quote] 非常感谢楼主的回答,我刚才做了模拟请求的测试,直接发送请求,获取到header信息是null,然后在浏览器中访问自己网站时也获取到的header也为null。很感谢楼主的回答,谢谢了! [/quote] 别逗我... 模拟请求, header是null, 浏览器请求, 也是null.....砸我招牌呢, 怎么回事的 ?
Iversonbi 2014-12-30
  • 打赏
  • 举报
回复
引用 134 楼 javaloverkehui 的回复:
[quote=引用 133 楼 Iversonbi 的回复:] 我想请教楼主下,我最近需要做一个简单网站统计,我在filter中拦截所有的请求,获取到来源地址。若是通过爬虫请求过来的url这种情况下能否获取header信息,若是能获取到的header信息,劳驾问下这信息又是什么?谢谢楼主了
request.getHeader 这是可以获取到头信息的, 头信息是什么这我可能无法回答全, 但头信息里, 对你有用的, 一个是referer, 一个是User-Agent, 还有一个Accept, 第一个referer可以理解为来源, 用这个判断其实是可以的, 但最好不要这样判断, 因为容易误杀. Accept我也没见人用这个判断过. 有一种可行的, 就是判断user-agent, 如果user-agent为空, 可以确定是爬虫. 当然, 现在好多爬虫也是自带user-agent,完全模拟浏览器, 这时候你要在拦截器里判断它的行为. 之前有讲过的. 现在回答你的问题. 其实用技术模拟的爬虫, 和真实浏览器没区别的. 所以你说的这个问题, 应该问如何获取一个请求的来源. request.getHeader("Referer") 这个就是了, 我应该没记错.[/quote] 非常感谢楼主的回答,我刚才做了模拟请求的测试,直接发送请求,获取到header信息是null,然后在浏览器中访问自己网站时也获取到的header也为null。很感谢楼主的回答,谢谢了!
Iversonbi 2014-12-30
  • 打赏
  • 举报
回复
引用 133 楼 Iversonbi 的回复:
我想请教楼主下,我最近需要做一个简单网站统计,我在filter中拦截所有的请求,获取到来源地址。若是通过爬虫请求过来的url这种情况下能否获取header信息,若是能获取到的header信息,劳驾问下这信息又是什么?谢谢楼主了
非常感谢楼主的回答,我刚才做了模拟请求的测试,直接发送请求,获取到header信息是null,然后在浏览器中访问自己网站时也获取到的header也为null。很感谢楼主的回答,谢谢了!
一脸辣椒 2014-12-30
  • 打赏
  • 举报
回复
个人表示做个一个网站爬虫项目,但是还是不知道爬虫是干嘛的- -!
我意纵横 2014-12-30
  • 打赏
  • 举报
回复
引用 133 楼 Iversonbi 的回复:
我想请教楼主下,我最近需要做一个简单网站统计,我在filter中拦截所有的请求,获取到来源地址。若是通过爬虫请求过来的url这种情况下能否获取header信息,若是能获取到的header信息,劳驾问下这信息又是什么?谢谢楼主了
request.getHeader 这是可以获取到头信息的, 头信息是什么这我可能无法回答全, 但头信息里, 对你有用的, 一个是referer, 一个是User-Agent, 还有一个Accept, 第一个referer可以理解为来源, 用这个判断其实是可以的, 但最好不要这样判断, 因为容易误杀. Accept我也没见人用这个判断过. 有一种可行的, 就是判断user-agent, 如果user-agent为空, 可以确定是爬虫. 当然, 现在好多爬虫也是自带user-agent,完全模拟浏览器, 这时候你要在拦截器里判断它的行为. 之前有讲过的. 现在回答你的问题. 其实用技术模拟的爬虫, 和真实浏览器没区别的. 所以你说的这个问题, 应该问如何获取一个请求的来源. request.getHeader("Referer") 这个就是了, 我应该没记错.
Iversonbi 2014-12-30
  • 打赏
  • 举报
回复
我想请教楼主下,我最近需要做一个简单网站统计,我在filter中拦截所有的请求,获取到来源地址。若是通过爬虫请求过来的url这种情况下能否获取header信息,若是能获取到的header信息,劳驾问下这信息又是什么?谢谢楼主了
我意纵横 2014-12-30
  • 打赏
  • 举报
回复
引用 141 楼 zhengweijian15 的回复:
一次工作要我爬某快递所有快递点信息,我本来想先拿list,然后访问detail的(很快就能结束)。 结果那个list页面的数据写js文件里了,我找了半天找不到数据。(这时候应该怎么办???) 后来火了,直接暴力循环10W次 detail页面(id是5位的,但不是每个id都存在detail页面) 用多线程跑了半小时才跑完,还好不是6位的
如果是静态的JS文件, 直接读JS文件, 它的数据肯定是有规律的, 不在它自己都读不了. 如果不是静态的JS文件, 通过接口去获取的, 那更简单, 你直接读接口就行了. 其实我没太明白你说的具体意思, 如果我说的不是你想要的, 你可以描述再详细点 .
  • 打赏
  • 举报
回复
一次工作要我爬某快递所有快递点信息,我本来想先拿list,然后访问detail的(很快就能结束)。 结果那个list页面的数据写js文件里了,我找了半天找不到数据。(这时候应该怎么办???) 后来火了,直接暴力循环10W次 detail页面(id是5位的,但不是每个id都存在detail页面) 用多线程跑了半小时才跑完,还好不是6位的
我意纵横 2014-12-30
  • 打赏
  • 举报
回复
引用 139 楼 Iversonbi 的回复:
[quote=引用 138 楼 javaloverkehui 的回复:] [quote=引用 137 楼 Iversonbi 的回复:] [quote=引用 134 楼 javaloverkehui 的回复:] [quote=引用 133 楼 Iversonbi 的回复:] 我想请教楼主下,我最近需要做一个简单网站统计,我在filter中拦截所有的请求,获取到来源地址。若是通过爬虫请求过来的url这种情况下能否获取header信息,若是能获取到的header信息,劳驾问下这信息又是什么?谢谢楼主了
request.getHeader 这是可以获取到头信息的, 头信息是什么这我可能无法回答全, 但头信息里, 对你有用的, 一个是referer, 一个是User-Agent, 还有一个Accept, 第一个referer可以理解为来源, 用这个判断其实是可以的, 但最好不要这样判断, 因为容易误杀. Accept我也没见人用这个判断过. 有一种可行的, 就是判断user-agent, 如果user-agent为空, 可以确定是爬虫. 当然, 现在好多爬虫也是自带user-agent,完全模拟浏览器, 这时候你要在拦截器里判断它的行为. 之前有讲过的. 现在回答你的问题. 其实用技术模拟的爬虫, 和真实浏览器没区别的. 所以你说的这个问题, 应该问如何获取一个请求的来源. request.getHeader("Referer") 这个就是了, 我应该没记错.[/quote] 非常感谢楼主的回答,我刚才做了模拟请求的测试,直接发送请求,获取到header信息是null,然后在浏览器中访问自己网站时也获取到的header也为null。很感谢楼主的回答,谢谢了! [/quote] 别逗我... 模拟请求, header是null, 浏览器请求, 也是null.....砸我招牌呢, 怎么回事的 ?[/quote]没有没有,我下载了一个模拟请求的工具,然后向我本地服务器发送的请求,或是在浏览器中直接访问我本地的服务器,我在服务端 getHeader 的时候打印出来的 url的确是空,若是把我自己的网站链接放在别的网站上,链接过来的话,访问的时候,我在服务端getHeader 是有值的,这个值是放我连接的网站地址。不知道楼主的意思是……若是回答有误,还望楼主指教[/quote] 那是OK的, referer就是这样的, 在浏览器中操作时, 点开第一个页面是没有referer的, 当你在当前页面再去打开窗口时, 浏览器自动会把referer给加上. 机器人去请求时, referer一般尽量加上, 虽然别人程序不会封你, 但查看日志的人, 会发现你请求的异常的.
我意纵横 2014-12-29
  • 打赏
  • 举报
回复
引用 124 楼 chenpeng4527 的回复:
楼主可以教教我吗?我对这块还是很感兴趣的。
加群.
chenpeng4527 2014-12-29
  • 打赏
  • 举报
回复
楼主可以教教我吗?我对这块还是很感兴趣的。
zyr987503101 2014-12-29
  • 打赏
  • 举报
回复
没研究过爬虫。。。
我意纵横 2014-12-29
  • 打赏
  • 举报
回复
引用 130 楼 u010222012 的回复:
楼主qq群多少,求学习
上面有发过的, 已经发了两次了, 你点击只显示楼主, 应该能快速找到, 是一张二维码, 用扣扣扫
加载更多回复(118)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧