爬虫分为两个部分:
第一个 伪装 目的:想办法拿到源数据
第二个 交互 目的:想办法提取有用的数据
参数构造流程
这种提交数据得到相应的请求,往往参数比较麻烦,所以参数构造是得到完整请求的关键
以定位到url为前提
1.先做对比,找出不同的参数
2.从之前的请求响应中找数据
1)网页源代码中查找
2)全局请求搜索
3.js加载调试,查找生成规律
参数来源(重要)
不变的参数写固定值,变动的参数的来源在JS中寻找,即js渗透
一个动态参数的来源可能只有两个:
一是来自之前的请求响应,二是js生成
实战案例--百度翻译
1.打开百度翻译网站 '百度翻译-200种语言互译、沟通全世界!'
2.新建一个百度翻译.py的文件,把目的写下来
""" 目的:实现爬虫代码自动翻译的功能 输入中文: 程序翻译 英文 """
效果实现:
希望 输入 input('输入你想要翻译的中文:') # 中国
print('英文信息:') # China
3.回到百度翻译,邮件点击检查,选择Network, 刷新网页, 选择 all, response, 找到china
4.选择6,点击header, Request URL 就是我们要找的url,Request Method 是post, 把Request URL 复制到 百度翻译.py
5.在百度翻译.py 中导入模块, 把 payload里面的参数复制到在百度翻译.py中,header 添加ua参数
import requests
url = 'https://fanyi.baidu.com/v2transapi?from=zh&to=en'
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
}
form_data = {
'from': 'zh',
'to': 'en',
'query': '中国',
'simple_means_flag': '3',
'sign': '777849.998728',
'token': '57be1898f78d62d10d30548ca8ed7e1b',
'domain': 'common',
'ts': '1700272827505'
}
res = requests.post(url, data=form_data, headers=header)
print(res.text)
运行结果如下
6. 报错说明被反爬了,需要继续添加参数,header里面添加 cookie和Acs-Token, 运行 有结果
import requests
url = 'https://fanyi.baidu.com/v2transapi?from=zh&to=en'
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
'Cookie':'BIDUPSID=A6A494468AAD3426A5AD2C590F31B0F7; PSTM=1694525041; BAIDUID=C58252900A625AE07CC490584AD65FB9:FG=1; APPGUIDE_10_6_6=1; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BDUSS_BFESS=E1BdXRIaVF0SFZOcUc1VjBHeUpULUdkYTJwRU5rbTRRa3RLQmxPbWdhQ0d3SHRsSUFBQUFBJCQAAAAAAAAAAAEAAADxtnRMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYzVGWGM1RlV; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BAIDUID_BFESS=C58252900A625AE07CC490584AD65FB9:FG=1; BA_HECTOR=2g042k050ga4a0al21a124a01ildilf1q; ZFY=C1IN5psD414SKDpVf1E9E2CDRz:BGo2SAK0JdVxVmicQ:C; APPGUIDE_10_6_9=1; H_PS_PSSID=39635_39669_39673_39664_39685_39690_39676_39678_39712_39732_39738_39779_39703; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; PSINO=5; delPer=0; BCLID=4577277280475853536; BCLID_BFESS=4577277280475853536; BDSFRCVID=jgPOJexroG3O1HvqS5XUEHtYoFweG7bTDYrEOwXPsp3LGJLVFdWiEG0Pts1-dEu-S2OOogKK0eOTHkfP_gt2OJOuKFu1fBfj6snEtf8g0M5; BDSFRCVID_BFESS=jgPOJexroG3O1HvqS5XUEHtYoFweG7bTDYrEOwXPsp3LGJLVFdWiEG0Pts1-dEu-S2OOogKK0eOTHkfP_gt2OJOuKFu1fBfj6snEtf8g0M5; H_BDCLCKID_SF=tRAOoC_-tDvDqTrP-trf5DCShUFsatbTB2Q-XPoO3KOchqnCKq-hWhLkyhOk2M5f5mkf3fbgy4op8P3y0bb2DUA1y4vp0t3U2mTxoUJ2-KDVeh5Gqq-KXU4ebPRiJPQ9QgbW0fJ75--K8pcO5fRP5j_ELxjBtJJX36nhVn0MBCK0HPonHj_2D5jP; H_BDCLCKID_SF_BFESS=tRAOoC_-tDvDqTrP-trf5DCShUFsatbTB2Q-XPoO3KOchqnCKq-hWhLkyhOk2M5f5mkf3fbgy4op8P3y0bb2DUA1y4vp0t3U2mTxoUJ2-KDVeh5Gqq-KXU4ebPRiJPQ9QgbW0fJ75--K8pcO5fRP5j_ELxjBtJJX36nhVn0MBCK0HPonHj_2D5jP; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1698115034,1700208307,1700272370; ab_sr=1.0.1_MTMyYjE2MzM2NzNhYWQwZWFiMzZmMzRhN2RmM2U0OWIwM2ViOGJlNzc0YzcwN2U3NzlmOGZmODU0Y2I2ZTlkNzZiMWIwMTQzNGViMjczN2EzNWMwZTk2NzM5NDEwYzk2MDg4NzQ1ZGRmODA1MjcxNTU5MmMxZjMxZWIyYzczNWI5N2U1MDgzZGViNWMxZjg0OGFkOGE1YjNmMjJiZjg1ODY1NWFhNTg4NTZkOTNkM2MzODJhYWYzM2JkN2NmY2I0; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1700272827',
'Acs-Token':'1700272828974_1700272827537_H3kTxGspvVm4