
1 scriptB0y 2018 年 3 月 21 日 你要弄清反爬的点在哪里,哪个 header 是必须的,不然你换来换去什么都没用 |
2 yangzhezjgs OP @scriptB0y 感谢回复。。问题是我就没弄明白他反爬的机制是什么。。。返回状态码 202 我还是第一次遇到 |
3 scriptB0y 2018 年 3 月 21 日 @yangzhezjgs HTTP 状态码一般都没有什么意义,有的返回给你 200,但实际上页面没有内容,这取决于具体网站的实现,没什么太大意义。 你需要模拟出来这个 HTTP 请求,然后测试一下不加什么 header 会被阻止,你就知道哪个 header 是必须的了。然后你看看怎么在代码中获得这个 header 的 |
4 yangzhezjgs OP @scriptB0y 老哥,问题在于他并不是根据请求 header 来做判断,而是他是中间通过 js 做了一次或者多次跳转,而不是简单的通过一次请求的 header 来判断。 返回的 202 只是一个中间状态,之后还有跳转,最后还是返回 200,但是中间这个过程我找不到办法模拟 |
5 manzhiyong 2018 年 3 月 21 日 用 webdriver 调 chrome 试试 |
6 yangzhezjgs OP |
7 opengps 2018 年 3 月 21 日 ua,reffer 完全按照浏览器里的填写 |
8 scriptB0y 2018 年 3 月 21 日 @yangzhezjgs 你先拿到 202 这个状态的结果,后一个跳转的目的地肯定是通过这个结果计算出来的吧,然后如果再跳转那你就继续看看,我遇到过的情况一般都这种 js 都可以模拟出来的。 除非某个地方的 js 通过加密计算需要一个 token,那就只能用浏览器执行这段 js 了。 |
9 yangzhezjgs OP @opengps 这种方法我之前尝试过了。。。并没有用 |
10 yangzhezjgs OP @scriptB0y 这个我也想过,但是他做了加密,202 的返回结果类似乱码,并不是真实的 js 代码....我 copy 下来保存为 html,在浏览器里打开也是空白.... |
11 brightguo 2018 年 3 月 21 日 我来爬爬爬看,验证下你说的方法~~~稍等 |
12 yangzhezjgs OP @brightguo 欢迎欢迎。。跪求解决方法 |
13 manzhiyong 2018 年 3 月 21 日 from selenium import webdriver url = "http://app2.sfda.gov.cn/datasearchp/gzcxSearch.do?formRender=cx&page=1" driver = webdriver.Chrome() driver.get(url) print driver.page_source 我这是正常的 |
14 brightguo 2018 年 3 月 21 日 +1 driver = webdriver.Chrome() driver.get(url) html = driver.page_source 可以 |
15 yangzhezjgs OP |
16 Arrowing 2018 年 3 月 21 日 via Android 会不会掉蜜罐里了? |
17 goofool 2018 年 3 月 21 日 chrome 默认配置可以 headless chrome 可以 phantomjs 默认配置不行 |
18 Itoktsnhc 2018 年 3 月 21 日 目测是 cookie 的关系: Cookie: JSESSIOnID=C340BCBB36485013122B70B59E0B6A8A; FSSBBIl1UgzbN7N80S=GbBGB7f4oP98rH7eXqhUFWb8PraboCvvQXAinlgIcUXhi7Ov2KSFc0dWQz_zW6ah; FSSBBIl1UgzbN7N80T=1kZkIyFDq0P301zKjNjN0vzCd1x2Dk7s7khgO0Pl3eB0QvuYIgJ8M08UKApGxZHudaZwJMb.oTpIxWG5pgLxfaiAFvaj3JvQS1e.HYuPUEEHpzHfnSv0BvoKMQ50_EGSRlq9Ckj7r8dA0zybuc_CocLCuY20VgueYiHnURhsgHb0e5UDm3MevKP37CZ1iHRrtkkt2RFnMrduBwI7Uywge3hlRVIwAT9JVcBDg0FrMR0gF4_eHR1IW47QcUEDiZ4HyKNAQ.BqyRZH1W6dLcrqIZhWyyzIXkH_Ts4QmZ_EcCgXwR.DiSLxAxY9T8AyxDhiqB3Rk5HttJgOukIvAMJi.svxT1Y01dPJex0nAMyn7rivliq |
19 xlrtx 2018 年 3 月 21 日 如果有时间可以看下他的交互协议是怎样工作的, 推荐一个视频和播主, 他的逆向 JS 的思路很不错, 用到了函数 hook 很有意思. |
20 Itoktsnhc 2018 年 3 月 21 日 以及当 202 的时候返回响应里面: |
21 Itoktsnhc 2018 年 3 月 21 日 不好一次 ctrl +enter 手误 提交了 接上条 <script type="text/Javascript">window.Onload=function(){var _$rU=document.getElementById(_$f7('ondoal'));_$cc(_$rU.name,_$tY(_$rU,_$zo('mdpf2UXqQG')));};</script> 看起来是写入了 Cookie ? 同时返回的 html 中有个<meta> |
22 Itoktsnhc 2018 年 3 月 21 日 http://app2.sfda.gov.cn/datasearchp/gzcxSearch.do?formRender=cx&page=1 202 空白 Header 请求 http://app2.sfda.gov.cn/4QbVtADbnLVIc/c.FxJzG50F.js?D9PVtGL=db0daa js 文件 操作 cookie? http://app2.sfda.gov.cn/datasearchp/gzcxSearch.do?formRender=cx&page=1 实际 html 携带 Cookie 的请求 |